打字稿编译不需要/必需的来源

时间:2017-12-11 09:30:55

标签: typescript

TS 2.6.2,目录中有三个文件:

interface.ts:

export interface Env {
    x: string
}

index.ts:

import {Env} from './interface' // imports only interface

const env: Env = {x: '1'}

console.log(env.x)

tsconfig.json:

{
  "include": [
    "index.ts"
  ]
}

我做汇编:tsc --outDir ./out,我看到了:

index.js
inteface.js

(如果我从import {Env} from './interface'删除index,我只会看到index.js

我想知道为什么TSC在JS interface.js中进行编译,如果index.ts只导入来自interface.ts的接口而不是JS CODE?

1 个答案:

答案 0 :(得分:1)

这是设计的。这是一个relevant GitHub issue

配置中的文件键只显示Typescript的起点。由于index.ts导入interface.ts,因此类型检查程序必须解析interface.ts才能检查类型。

至于创建空文件的原因,Ryan Cavanaugh在上面的GitHub问题中回答:

  

问题是当您在单独的编译期间从1语句文件转到0语句文件时会发生什么 - 不发出空白文件,您可能仍在加载并执行该1语句。