用途:为项目配置“无构建步骤”的类型检查,避免使用 tsc 编译或打包流程,同时保留 IDE 类型提示与错误检查。
主要能力与做法: 浏览器端使用纯 .js 文件配合 JSDoc 注解,代码可直接在浏览器运行;Node.js 端使用 .ts 文件并采用可擦除语法(Erasable Syntax),Node.js v24.11.0+ 可直接执行,无需构建。
必要配置:package.json 中设置 "type": "module"、engines.node >=24.11.0,并添加脚本 "typecheck": "tsc --noEmit"。tsconfig.json 中启用 erasableSyntaxOnly、verbatimModuleSyntax、allowImportingTsExtensions、rewriteRelativeImportExtensions、noEmit、allowJs、checkJs、strict、skipLibCheck 等选项。
编码规则:.js 文件用 JSDoc 定义类型,避免 interface、type 等 TS 专有语法,类型导入使用 TS 5.5+ 的 @import 写法;.ts 文件避免 enum、namespace、构造函数参数属性、experimentalDecorators,导入路径需带 .ts 扩展名,类型导入用 import type。文档中应注明不要用 npx tsx 或 ts-node,直接 node script.ts 运行。
其他能力:Node.js v22.6.0+ 提供 node:module 的 stripTypeScriptTypes API,可编程剥离类型,支持 strip 与 transform 两种模式。类型设计上建议用可辨识联合替代 enum,强调封装、约束表达与编译期保证。
限制:Node.js 原生执行 TS 依赖较新版本;可擦除语法限制排除了 enum、namespace 等特性;资料未提供收费、平台或效果信息。