TypeScript编译器不会在缺少声明时抛出错误

时间:2016-02-05 21:33:18

标签: node.js typescript

我在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'.

如何在第一种情况下使编译器发出错误?我刚刚在我的项目中发现我突然删除了一个变量,它在运行时中失败了,而不是编译时

1 个答案:

答案 0 :(得分:1)

这是一个令人遗憾的结果,即没有某种导出或导入的文件被编译器视为“脚本”文件。编译器假定脚本文件只在全局范围内运行,并且只是拼接在一起。如果没有指定--outFile,它将无法明确说明变量声明在使用后是否会发生。

一种解决方法是添加

export {};

对您的文件的声明。