为什么只为具有接口的.ts文件生成.js文件

Pac*_*ace 8 typescript

假设我有一个adder.ts看起来像这样的文件:

import { Operand } from './operand';

export interface Adder {
  add(op1: Operand, op2: Operand): Operand;
}
Run Code Online (Sandbox Code Playgroud)

tsconfig.json看起来像:

{
    "compilerOptions": {
        "declaration": false,
        "module": "commonjs",
        "outDir": "./dist",
        "target": "es6",
        "sourceMap": true
    },
    "include": [
        "src/**/*"
    ]
}
Run Code Online (Sandbox Code Playgroud)

当我转换这段代码时,我希望只收到它dist/adder.d.ts.但是,还有一个dist/adder.js内容生成:

Object.defineProperty(exports, "__esModule", { value: true });
Run Code Online (Sandbox Code Playgroud)

为什么生成此文件?它有什么用途?在一天结束时,我想我并不在乎,因为它实际上永远不会被要求/装载,并且会被任何捆绑者修剪掉.我注意到它的唯一原因是因为我的覆盖工具将此文件报告为未覆盖.

Mat*_*hen 7

官方回答,通过网络搜索找到:.js为每个.ts简化构建过程生成一个.

另一个好处是,如果你做一些愚蠢的事情:

import * as Adder from "./dist/adder";  // or whatever is the correct path
console.log(Adder);
Run Code Online (Sandbox Code Playgroud)

你得到一个空命名空间而不是运行时错误.