Typescript 编译器忽略了元组的 "non assignable" 错误

Typescript compiler omits a "non assignable" error for tuples

具有以下代码:

var abc: [string, number] = [5, "test"];

console.log(abc);

如我所料,红色波浪线出现在 'abc' 下,并出现此错误:

[ts] Type '[number, string]' is not assignable to type '[string, number]'. Type 'number' is not assignable to type 'string'.

但是还是这样编译成JS:

var abc = [5, "test"];
console.log(abc);

我是不是遗漏了一些编译器选项,或者这是一个错误?

这是标准的 TypeScript 行为。对于大多数类型的错误,TypeScript 编译器仍会生成一个 JavaScript 文件。 (它 return 构建脚本可以检测并采取行动的非零退出代码。)

尝试一些其他类型的错误,例如输入错误的变量名称:

var abc: number = 5;
console.log(abd);

你会看到同样的事情发生。

编辑:哦,一个编译器标志来改变这种行为。使用:

tsc --noEmitOnError test.ts

如果遇到错误,将禁止生成 test.js 文件。