部署 TypeScript:近期进展和可能的未来方向

这篇博客主要探讨了部署 TypeScript 的相关内容,包括当前最佳实践、最新进展、未来趋势以及进一步阅读等方面:

  • 当前最佳实践:TypeScript 编译器 tsc 执行三项任务,即类型检查、生成 JavaScript 文件和声明文件。部署库文件 util.ts 时,需部署 util.js(运行时功能)、util.js.map(源映射)、util.d.ts(类型)、util.d.ts.map(声明映射)和 util.ts。除 util.ts 外,其他文件应相邻放置,方便包导出。
  • 最新进展

    • 语法上生成 JavaScript 和声明:类型剥离和隔离声明tsc 相对较慢,因为它需要解析 TypeScript 语法并进行语义分析。最新进展通过纯语法分析来生成代码,限制包括标记类型导入、避免非 JavaScript 运行时特性等。无需 tsconfig.json 即可通过类型剥离和隔离声明生成 TypeScript。
    • 所有主要服务器运行时现在直接运行 TypeScript:Deno、Bun 和 Node.js 支持直接运行 TypeScript,Node.js 默认支持类型剥离,通过 CLI 选项可支持更多语言特性。
    • JSR(JavaScript 注册表):可上传带有 TypeScript 文件的包,TypeScript-first 平台会安装 TypeScript 文件,其他平台按需生成 .js.d.ts 文件。
    • .d.ts 的优缺点.d.ts 文件使类型检查更快,更稳定,但存在一些限制,如不支持某些新特性。
  • 未来趋势

    • 包是否应包含 TypeScript:Node.js 不支持包中的 TypeScript,JSR 支持发布 .ts 文件,两者各有优缺点。
    • 浏览器中的类型剥离ES Module Shims 可在旧浏览器中运行 TypeScript,通过按需类型剥离实现。
    • ECMAScript 提案:类型注释:提议为 JavaScript 添加可选类型注释,JavaScript 引擎忽略它们,各种类型检查器可用于开发时的静态分析。
    • JSX 的未来:类型剥离可能使 JSX 不那么流行,有使用 tagged templates 的替代方案。
    • 枚举的未来:类型剥离不允许使用枚举,ECMAScript 枚举提案可擦除枚举注释的拉取请求 提供了替代方案。
  • 进一步阅读:“Exploring TypeScript”中的“Type stripping”isolatedDeclarations: generating .d.ts files more efficiently”部分。
阅读 34
0 条评论