假设一个类将自己添加到另一个类中,如下所示:
bar.ts
:
import { Foo } from './foo';
export class Bar {}
Foo.prop = Bar;
文件foo.ts
export class Foo {
public static prop: any;
}
现在,如果要在index.ts
中使用它
import { Foo } from './foo';
console.log(Foo.prop); // -> undefined
它是未定义的。似乎根本没有使用bar.ts
(可能是摇树)。因此,我可以将其修复如下:
import { Foo } from './foo';
import { Bar } from './bar';
new Bar(); // trick!
console.log(Foo.prop); // -> Bar
因为我显示的解决方案很丑,所以还是有办法告诉打字稿包含Bar
。
为完整性起见,这是我的tsconfig.json
{
"compilerOptions": {
"module": "commonjs",
"declaration": true,
"sourceMap": true,
"noImplicitAny": false,
"removeComments": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es2017",
"outDir": "./dist",
"baseUrl": "./",
"lib": ["es2017", "dom", "dom.iterable"]
},
"exclude": ["node_modules", "**/*.spec.ts", "dist"]
}
答案 0 :(得分:0)
Foo.prop = Bar;
是导致问题的原因,您正在Bar.ts中执行此操作,在Foo.ts中执行了此操作,现在当您在index.ts中创建Foo的新对象时,摇晃树不会删除Bar.ts
通常,如果需要向类添加依赖项,则始终在定义该类的文件中执行此操作(在这种情况下为Foo.ts)