我正在尝试将抽象类扩展到另一个类,但为了更方便,我需要在另一个文件中使用这个抽象类。不幸的是,它引发了一个我很难理解的运行时错误。
这有效:
abstract class Item{
constructor(){
console.log("I am an Item");
}
}
export class Folder extends Item{
constructor(){
super();
}
}
记录:
I am an Item
这不是:
module MyModule{
export abstract class Item{
constructor(){
console.log("I am an Item");
}
}
}
export class Folder extends MyModule.Item{
constructor(){
super();
}
}
编译但抛出:
Uncaught TypeError: Cannot read property 'prototype' of undefined
有谁知道发生了什么?
答案 0 :(得分:0)
源文件中的顶级导出(在这种情况下为export class Folder
)意味着TypeScript会将该文件视为外部模块,但除非您在编译时指定模块格式,否则应该发出{{1所以,如果您只使用内部模块,我有点困惑如何设法编译这些代码片段。
我强烈建议使用外部模块(其中每个error TS1148: Cannot compile modules unless the '--module' flag is provided.
文件本身就是一个模块)并完全避免名称空间(以前称为内部模块)。
除了外部模块之外,您的代码看起来像什么:
.ts
但是,如果您想坚持使用命名空间,那么您可以这样做:
// mymodule.ts
export abstract class Item {
constructor() {
console.log("I am an Item");
}
}
// folder.ts
import * as MyModule from './mymodule';
export class Folder extends MyModule.Item {
constructor() {
super();
}