我在NodeJS项目中发现了这个奇怪的情况。我将试着在这里描述我的问题,相信tsconfig.json
中的一个简单选项恰好适用于这种情况。我使用TypeScript v1.7.3。
文件test1.ts
包含变量声明:
// test1.ts
let a = 1;
文件test2.ts
包含不正确的变量用法:
// test2.ts
console.log(a);
tsconfig.json
看起来像这样:
// tsconfig.json
{
"compilerOptions": {
"module": "commonjs",
"target": "es5"
}
}
编译器不向我发出一个错误,即我使用了未声明的变量a
。但是如果我尝试导出其他变量,比如说b
,我们就会得到预期的错误:
// test1.ts
let a = 1;
export let b = 2;
编译器:
Error:(1, 13) TS2304: Cannot find name 'a'.
如何在第一种情况下使编译器发出错误?我刚刚在我的项目中发现我突然删除了一个变量,它在运行时中失败了,而不是编译时。
答案 0 :(得分:1)
这是一个令人遗憾的结果,即没有某种导出或导入的文件被编译器视为“脚本”文件。编译器假定脚本文件只在全局范围内运行,并且只是拼接在一起。如果没有指定--outFile
,它将无法明确说明变量声明在使用后是否会发生。
一种解决方法是添加
export {};
对您的文件的声明。