TypeScript 是一种构建于 JavaScript 之上的强类型编程语言,为 JavaScript 增加类型语法,并加强代码与编辑器之间的结合。它可以在编辑器中更早发现错误,提供自动补全、接口和 JSX 等能力,同时理解已有的 JavaScript 代码并通过类型推断改善工具支持。TypeScript 代码会转换为 JavaScript,而 JavaScript 可以运行在浏览器、Node.js、Deno、Bun 以及应用中,因此项目可以逐步采用 TypeScript,而不是一次性重写全部代码。
核心功能
编辑器中的错误检查
TypeScript 会在编辑器中检查代码中的问题,并在代码运行前给出诊断信息。官网示例中,访问对象不存在的 name 属性时,编辑器会提示该属性不存在;在 JavaScript 示例中,orr 未定义以及对数组调用 trim 也会被标记出来。通过这些检查,开发者可以在编辑阶段发现拼写错误、属性错误和类型不匹配问题。
类型语法与类型推断
TypeScript 为 JavaScript 增加类型语法,也能够理解 JavaScript 并使用类型推断提供工具支持。示例中的 compact 函数将参数声明为 string[],返回值使用 slice 截取数组内容;类型信息帮助编辑器判断可用的属性和方法。官网同时强调,类型推断可以在不增加额外代码的情况下提供工具支持。
描述对象和函数的形状
TypeScript 可以描述代码中对象和函数的结构,使编辑器能够显示相关文档和问题。官网示例通过 interface Account 声明 id、displayName 和 version 字段的类型,再让 welcome 函数接收 Account 类型的用户对象。它还支持使用联合类型表达有限取值,例如把 Result 定义为只能是 pass 或 fail。
JavaScript、JSDoc 与 TypeScript 渐进采用
TypeScript 不要求项目立即全部改写。官网展示了三种逐步改进 JavaScript 的方式:直接使用 JavaScript 文件、在文件中加入 // @ts-check、使用 JSDoc 描述参数,或者将代码写成 TypeScript 文件。页面明确说明,可以逐步把类型应用到 JavaScript 项目中,每一步都会改善编辑器支持并改进代码库。
类型移除与 JavaScript 输出
TypeScript 文件中的类型信息会在转换为 JavaScript 时被移除。官网用 Result 类型和 verify 函数展示了这一过程:TypeScript 文件包含 result: Result,转换后的 JavaScript 文件中只保留函数逻辑和参数 result。页面将这一过程概括为“TypeScript becomes JavaScript via the delete key”,说明类型语法服务于开发阶段,而最终输出仍是 JavaScript。
使用方式
TypeScript 官网提供浏览器中的 Playground,可直接尝试代码;页面也提供在线试用或通过 npm 使用的入口,并提供下载和安装方式。使用场景包括 JavaScript 文件中的 @ts-check、通过 JSDoc 增加类型信息,以及直接编写 TypeScript 文件。官网还提供 Handbook 用于学习语言。正文没有说明是否需要注册,也没有提到需要自备模型 Key、API 或导入导出功能。
适用人群与场景
使用 JavaScript 进行开发、希望在编辑器中更早发现错误的开发者,可以使用 TypeScript 检查不存在的变量、属性和方法。需要维护对象与函数结构的开发者,可以用接口、联合类型和类型声明描述代码。已有 JavaScript 项目的团队可以从 @ts-check 或 JSDoc 开始,再逐步采用 TypeScript。需要让代码运行在浏览器、Node.js、Deno、Bun 或应用中的开发者,可以使用 TypeScript 编写代码并转换为 JavaScript。
注意事项
TypeScript 最终会转换为 JavaScript,类型信息不会保留在输出的 JavaScript 文件中。官网示例显示,类型检查可以发现问题,但页面没有说明运行时会保留这些类型检查。正文也没有提供价格、免费额度或付费档位信息。