Appearance
发出错误
从上一个示例中,你可能没有注意到的一件事,就是我们的 hello.js 文件再次更改。如果我们打开该文件,那么我们会看到内容仍然与我们的输入文件基本相同。
javascript
// 你好,世界
console.log('Hello World');
function greet(person, date) {
console.log("Hello " + person + ", today is " + date + "!");
}
greet("小金");
鉴于 tsc 报告了有关我们代码的错误这一事实,这可能有点令人惊讶,但这是基于 TypeScript 的核心价值观之一:大多数情况下,你会比 TypeScript 更了解发生了什么。 再回顾一下前面的内容,类型检查代码限制了我们可以运行的程序种类,因此需要权衡类型检查器认为可接受的类型。大多数情况下这没问题,但在某些情况下,这些检查会妨碍到我们。例如,想象自己将 JavaScript 代码迁移到 TypeScript 并引入类型检查错误。最终,你将开始为类型检查器进行代码清理,但原始 JavaScript 代码已经可以运行了!为什么非要将我们的JS代码转换为 TypeScript 代码,来去阻止运行它呢? 所以 TypeScript 默认不会妨碍我们代码的运行,因为这些JS在宿主环境里运行时没有问题的。当然,随着时间的推移,我们可能希望对错误更加防御,并使 TypeScript 的行为更加严格。在这种情况下,我们可以使用 noEmitOnError 编译器选项。尝试更改我们的 hello.ts 文件,并 tsc 使用该选项重新编译:
tsc --noEmitOnError hello.ts
你会注意到 hello.js 永远不会更新。