모듈에 클래스를 정의했습니다.
"use strict";
var AspectTypeModule = function() {};
module.exports = AspectTypeModule;
var AspectType = class AspectType {
// ...
};
module.export.AspectType = AspectType;
하지만 다음과 같은 오류 메시지가 나타납니다.
TypeError: Cannot set property 'AspectType' of undefined
at Object.<anonymous> (...\AspectType.js:30:26)
at Module._compile (module.js:434:26)
....
이 클래스를 내보내고 다른 모듈에서 어떻게 사용해야합니까? 다른 SO 질문을 보았지만 솔루션을 구현하려고 할 때 다른 오류 메시지가 나타납니다.
답변
Node 4에서 ES6를 사용하는 경우 트랜스 파일러없이 ES6 모듈 구문을 사용할 수 없지만 CommonJS 모듈 (노드의 표준 모듈)은 동일하게 작동합니다.
module.export.AspectType
해야한다
module.exports.AspectType
따라서 오류 메시지 “Undefined의 ‘AspectType’속성을 설정할 수 없습니다 module.export === undefined
. “
또한
var AspectType = class AspectType {
// ...
};
그냥 쓸 수 있어요
class AspectType {
// ...
}
기본적으로 동일한 동작을 얻습니다.
답변
// person.js
'use strict';
module.exports = class Person {
constructor(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
display() {
console.log(this.firstName + " " + this.lastName);
}
}
// index.js
'use strict';
var Person = require('./person.js');
var someone = new Person("First name", "Last name");
someone.display();
답변
ECMAScript 2015를 사용하면 이와 같은 여러 클래스를 내보내고 가져올 수 있습니다.
class Person
{
constructor()
{
this.type = "Person";
}
}
class Animal{
constructor()
{
this.type = "Animal";
}
}
module.exports = {
Person,
Animal
};
그런 다음 사용하는 곳 :
const { Animal, Person } = require("classes");
const animal = new Animal();
const person = new Person();
이름이 충돌하거나 다른 이름을 선호하는 경우 다음과 같이 이름을 바꿀 수 있습니다.
const { Animal : OtherAnimal, Person : OtherPerson} = require("./classes");
const animal = new OtherAnimal();
const person = new OtherPerson();
답변
사용하다
// aspect-type.js
class AspectType {
}
export default AspectType;
그런 다음 가져 오기
// some-other-file.js
import AspectType from './aspect-type';
자세한 내용은 http://babeljs.io/docs/learn-es2015/#modules 를 읽어보십시오.
답변
클래스 표현 은 간단하게 사용할 수 있습니다.
// Foo.js
'use strict';
// export default class Foo {}
module.exports = class Foo {}
–
// main.js
'use strict';
const Foo = require('./Foo.js');
let Bar = new class extends Foo {
constructor() {
super();
this.name = 'bar';
}
}
console.log(Bar.name);
답변
나는 단순히 이렇게 쓴다
AspectType 파일에서 :
class AspectType {
//blah blah
}
module.exports = AspectType;
다음과 같이 가져옵니다.
const AspectType = require('./AspectType');
var aspectType = new AspectType;
답변
다른 답변 중 일부는 비슷하지만 솔직히 가장 깨끗하고 간단한 구문을 사용하는 것이 좋습니다. OP는 ES6 / ES2015에서 수업을 내보내는 수단을 요청했습니다. 나는 당신이 이것보다 훨씬 더 깨끗해질 수 있다고 생각하지 않습니다.
'use strict';
export default class ClassName {
constructor () {
}
}