function makeClass(className, baseClass = _DefaultBaseClass, ...args) {
return (
eval(`
class ${className} extends ${baseClass} {
constructor(${...args}) {
super(${...args})
}
}
`)
)
}
'_DefaultBaseClass'위 발전기 기능 논리를 단순화하는 데 사용되는 빈 클래스는 다음과 같습니다
class _DefaultBaseClass() {
constructor() {}
}
퍼짐 연산자를 제외하고 모든 것이 제너레이터 코드에서 잘 작동합니다. 이 예제에서는 스프레드 연산자 자체가 템플릿 리터럴 외부의 프로젝트에서 제대로 작동합니다.
저는 '반응', 'es2015', 'stage-2', 'transform-runtime'과 같은 webpack 바벨 프리셋을 사용하고 있습니다.
간단하게 만 super'은'부르고 때이'모두 constructor' 떨어 뜨리지 왜 - 기본 생성자는 어쨌든 – Bergi
을한다 [ **'... '은 연산자가 아닙니다 **] (http://stackoverflow.com/questions/37151966/what-is-spreadelement-in-ecmascript-documentation-is-it-the-same-as-spread -oper/37152508 # 37152508). 배열 리터럴, 함수 정의, 함수 호출 및 배열 소멸 할당 구문의 일부입니다. 그것은 독립 실행 형 것이 아닙니다. '...'는 템플릿 리터럴의 일부가 아닙니다. –
@FelixKling 정보를 제공해 주셔서 감사합니다; 매우 도움이됩니다. – Ethan