这篇博客主要探讨了部署 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
文件使类型检查更快,更稳定,但存在一些限制,如不支持某些新特性。
- 语法上生成 JavaScript 和声明:类型剥离和隔离声明:
未来趋势:
- 包是否应包含 TypeScript:Node.js 不支持包中的 TypeScript,JSR 支持发布
.ts
文件,两者各有优缺点。 - 浏览器中的类型剥离:ES Module Shims 可在旧浏览器中运行 TypeScript,通过按需类型剥离实现。
- ECMAScript 提案:类型注释:提议为 JavaScript 添加可选类型注释,JavaScript 引擎忽略它们,各种类型检查器可用于开发时的静态分析。
- JSX 的未来:类型剥离可能使 JSX 不那么流行,有使用 tagged templates 的替代方案。
- 枚举的未来:类型剥离不允许使用枚举,ECMAScript 枚举提案 和 可擦除枚举注释的拉取请求 提供了替代方案。
- 包是否应包含 TypeScript:Node.js 不支持包中的 TypeScript,JSR 支持发布
- 进一步阅读:“Exploring TypeScript”中的“Type stripping”和“
isolatedDeclarations
: generating.d.ts
files more efficiently”部分。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。