假设我在分隔文件中定义了两个类,如下所示。
// a.ts export default class A { }
// b.ts export default class B { }
以下是我使用" a.ts"的代码。和" b.ts"。
// app.ts import A from "./a"; import B from "./b";
使用tsc
编译源代码后,我发现import
语句未发送到JavaScript文件。
// app.js "use strict"; Object.defineProperty(exports, "__esModule", { value: true });
但是如果我添加了一些代码来使用A
和B
,那么它们就会被发出。
// app.ts import A from "./a"; import B from "./b"; const a = new A(); const b = new B();
// app.js "use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; } Object.defineProperty(exports, "__esModule", { value: true }); const a_1 = __importDefault(require("./a")); const b_1 = __importDefault(require("./b")); const a = new a_1.default(); const b = new b_1.default();
我可以更改编译行为,以便它始终发出import
语句,无论它是否被使用。
以下是我的tsconfig.json
。
{ "compilerOptions": { "target": "ES2017", "module": "commonjs", "strict": false, "moduleResolution": "node", "esModuleInterop": true, "experimentalDecorators": true, "emitDecoratorMetadata": true } }