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?
答案 0 :(得分:1)
这是设计的。这是一个relevant GitHub issue。
配置中的文件键只显示Typescript的起点。由于index.ts
导入interface.ts
,因此类型检查程序必须解析interface.ts
才能检查类型。
至于创建空文件的原因,Ryan Cavanaugh在上面的GitHub问题中回答:
问题是当您在单独的编译期间从1语句文件转到0语句文件时会发生什么 - 不发出空白文件,您可能仍在加载并执行该1语句。