【发布时间】:2018-11-20 13:22:51
【问题描述】:
我正在尝试创建一个具有如下继承的树状结构:
base.ts:
export class BaseClass {
children: BaseClass[] = [];
get subclassChildren(): SubClass[] {
return this.children.filter((child): child is SubClass => child instanceof SubClass);
}
}
sub.ts:
import { BaseClass } from './base';
export class SubClass extends BaseClass {}
这不起作用,因为基类找不到SubClass:
TSError: ⨯ Unable to compile TypeScript: base.ts(4,26): error TS2304: Cannot find name 'SubClass'. base.ts(5,49): error TS2304: Cannot find name 'SubClass'. base.ts(5,78): error TS2304: Cannot find name 'SubClass'.
并不意外,但如果我尝试在 base.ts 中导入子类,它也不会工作,因为存在相互循环引用:
TypeError: Object prototype may only be an Object or null: undefined
有没有办法转发声明SubClass 或其他方式让这段代码工作?
编辑:
tsconfig.json(由tsc --init生成):
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"strict": true,
"esModuleInterop": true
}
}
【问题讨论】:
标签: typescript