假设我有一个文件adder.ts
,看起来像:
import { Operand } from './operand';
export interface Adder {
add(op1: Operand, op2: Operand): Operand;
}
我的tsconfig.json
如下:
{
"compilerOptions": {
"declaration": false,
"module": "commonjs",
"outDir": "./dist",
"target": "es6",
"sourceMap": true
},
"include": [
"src/**/*"
]
}
当我翻译此代码时,我希望只收到dist/adder.d.ts
。但是,还会产生一个dist/adder.js
的内容:
Object.defineProperty(exports, "__esModule", { value: true });
为什么生成此文件?它有什么作用?归根结底,我想我不太在意,因为它永远不会真正被需要/加载,并且会被任何捆绑程序删除。我注意到的唯一原因是我的覆盖率工具报告此文件为未发现。
答案 0 :(得分:7)
web search:为每个.js
生成一个.ts
可以简化构建过程。
另一个好处是,如果您做一些愚蠢的事情,例如:
import * as Adder from "./dist/adder"; // or whatever is the correct path
console.log(Adder);
您将获得一个空的名称空间,而不是运行时错误。
答案 1 :(得分:0)
从Node.js 8.5.0开始,本机支持导入模块。如果您不想再支持es5,则可以将module
选项更改为es2015
{
"compilerOptions": {
"module": "es2015"
}
}
adder.js
文件仍被创建,但是为空文件。覆盖率工具将不再在意