用途:面向大型 JavaScript 代码库的渐进式 TypeScript 迁移,避免一次性重写。开启 allowJs 后,同一项目内可同时包含 .ts 与 .js 文件,团队可按文件逐个转换并保持代码库可构建。
主要能力:在 tsconfig.json 中设置 allowJs: true 允许 JavaScript 文件;checkJs 控制是否对 JS 做类型检查(可先关闭,后续再开)。支持 TS 导入 JS(如 import { formatDate } from './utils.js'),也支持 JS 导入 TS;可用 declare module 为 JS 模块声明类型;可在 JS 中通过 // @ts-check、JSDoc 的 @param、@returns、@type、@typedef 添加类型。
使用方式: 1)建立 tsconfig.json,加入 allowJs、outDir、strict 等,示例键值:"allowJs": true、"checkJs": false、"strict": true、"esModuleInterop": true,并用 include 指定源码。 2)先转换 1 至 2 个工具文件验证构建。 3)转换叶子模块(无依赖的纯函数、工具、常量)。 4)沿依赖图向上推进,最后转换入口文件。 5)可选:完成后移除 allowJs。
适用场景:JavaScript 项目迁移、团队仍在学习 TypeScript、不能停止功能开发、混合 JS/TS 团队、大型存量项目。
限制与注意:文档未提供具体版本要求、性能数据或工具集成细节。迁移应避免一次性重写和先转换入口文件;需要正确配置文件才能控制编译;中途放弃会浪费前期投入。初期可使用 any,之后再逐步收紧 noImplicitAny、strictNullChecks 等检查。