0

假设一个类将自己添加到另一个类,如下所示

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"]
}
4

1 回答 1

0

Foo.prop = Bar;

是什么导致了问题,您在 Bar.ts 中执行此操作,在 Foo.ts 中执行此操作,现在当您在 index.ts 中创建 Foo 的新对象时,摇树不会删除 Bar.ts。

作为一般规则,如果您需要向类添加依赖项,请始终在定义类的文件中执行此操作(在这种情况下为 Foo.ts)

于 2019-05-27T05:16:16.387 回答