举个例子,比如拼写错误:函数未被调用:基本的逻辑错误:类型工具(Types for Tooling)TypeScript不仅在我们犯错的时候,可以找出错误,还可以防止我们犯错。类型检查器因为有类型信息,可以检查比如说是否正确获取了一个变量的属性。也正是因为有这个信息,它也可以在你输入的时候,列出你可能想要使用的属性。这意味着TypeScript对你编写代码也很有帮助,核心的类型检查器不仅可以提供错误信息,还可以提供代码补全功能。这就是TypeScript在工具方面的作用。TypeScript的功能很强大,除了在你输入的时候提供补全和错误信息,还可以支持“快速修复”功能,即自动的修复错误,重构成组织清晰的代码。同时也支持导航功能,比如跳转到变量定义的地方,或者找到一个给定的变量所有的引用。所有这些功能都建立在类型检查器上,并且跨平台支持。有可能你最喜欢的编辑器已经支持了TypeScript。
报错时仍产出文件(Emitting with Errors)在刚才的例子中,有一个细节你可能没有注意到,那就是如果我们打开编译输出的文件,我们会发现文件依然发生了改动。这是不是有点奇怪?tsc明明已经报错了,为什么还要再编译文件?这就要讲到TypeScript一个核心的观点:大部分时候,你要比TypeScript更清楚你的代码。举个例子,假如你正在把你的代码迁移成TypeScript,这会产生很多类型检查错误,而你不得不为类型检查器处理掉所有的错误,这时候你就要想了,明明之前的代码可以正常工作,TypeScript为什么要阻止代码正常运行呢?所以TypeScript并不会阻碍你。当然了,你如果想要TypeScript更严厉一些,你可以使用noEmitOnError编译选项,试着改下你的hello.ts文件,然后运行tsc:你会发现hello.ts并不会得到更新。