【发布时间】:2014-07-04 09:40:04
【问题描述】:
这 3 个简单的类被设置在三个独立的 Typescript (1.0.1) 文件中,这些文件被转译为 CommonJS 模块
SubA 和 SubB 都继承自 Klass。
Klass 也导入 SubB。
在node,运行
var SubA = require('./SubA');
var sa = new SubA('blah');
sa.toSubB();
SubB 构造函数中的 super() 调用失败,TypeError: Object #<Object> has no method 'call')
(编辑:将上面js代码中的SubA替换为SubB,不会失败)
你有没有办法解决这个问题,或者Klass 不可能导入SubB?
类.ts
import SubB = require('./SubB')
class Klass {
private name: string
setName(name: string) {
this.name = name
}
getName(): string {
return this.name
}
createSubB(): SubB {
return new SubB(name)
}
}
export = Klass
子A.ts
import Klass = require('./Klass')
import SubB = require('./SubB')
class SubA extends Klass {
constructor(name:string) {
super()
this.setName(name)
}
toSubB(): SubB {
return new SubB(this.getName())
}
}
export = SubA
SubB.ts
import Klass = require('./Klass')
import SubA = require('./SubA')
class SubB extends Klass {
constructor(name:string) {
super()
this.setName(name)
}
toSubA(): SubA {
return new SubA(this.getName())
}
}
export = SubB
tsc 命令行选项:--module commonjs -target ES5
【问题讨论】:
标签: node.js typescript commonjs