TypeScript 5.4 发布
新版本的主要特性包括:
1. 闭包中的保留类型缩小(Preserved Narrowing in Closures)
2. NoInfer 实用类型(NoInfer Utility Type)
3. Object.groupBy 和 Map.groupBy 方法
4. 对 require() 的更好支持
5. 增强的导入属性和断言检查
#TypeScript #前端
https://devblogs.microsoft.com/typescript/announcing-typescript-5-4/
新版本的主要特性包括:
1. 闭包中的保留类型缩小(Preserved Narrowing in Closures)
2. NoInfer 实用类型(NoInfer Utility Type)
3. Object.groupBy 和 Map.groupBy 方法
4. 对 require() 的更好支持
5. 增强的导入属性和断言检查
#TypeScript #前端
https://devblogs.microsoft.com/typescript/announcing-typescript-5-4/
Microsoft News
Announcing TypeScript 5.4
Today we’re excited to announce the release of TypeScript 5.4! If you’re not familiar with TypeScript, it’s a language that builds on top of JavaScript by making it possible to declare and describe types. Writing types in our code allows us to explain intent…
Figma 为了提高移动渲染架构的性能,曾使用自创的编程语言 Skew。随着时间的推移,Skew 语言的局限性逐渐显现,包括新员工上手难度大、难以与代码库其他部分集成以及缺乏 Figma 外部的开发者生态系统。因此,Figma 最近完成了将所有 Skew 代码迁移到 TypeScript 的过程。
Skew 语言的由来
1. Skew 是 Figma 在早期为了提高播放引擎性能而创造的。
2. 它最初用于在 web 和移动端上支持 Figma 的原型查看器,但随着时间推移,Figma 意识到新员工难以上手 Skew,而且它难以与代码库其他部分集成,并缺乏 Figma 以外的开发者生态系统。
TypeScript 的优势
1. Figma 切换到 TypeScript 之后使得代码更容易集成内外部代码,利用了 TypeScript 生态系统的工具,如 linters、打包器和静态分析工具。
2. 使用了现代 JavaScript 特性如 async/await 和更灵活的类型系统,从而降低了新开发者的上手难度。
迁移过程
1. WebAssembly 的广泛支持:TypeScript 可以使用基于 WebAssembly 的 C++ 实现,以保持在移动浏览器上的性能,这在早期是不可能实现的。
2. Skew 优化的追趕:Figma 发现替换 Skew 的关键性能优化部分有了其他解决方案,这使得放弃 Skew 成为可能。
3. 转换代码库:
第一阶段:开发者继续编写 Skew 代码,新的 TypeScript 编译器显示了新代码库的样子。
第二阶段:直接从 Skew 生成 TypeScript 代码并开始使用生成的 TypeScript 代码。
第三阶段:将 TypeScript 代码作为开发的源头,并停止从 Skew 自动生成代码。
Figma 使用了源代码映射(source maps)来保持调试体验,并实施条件编译以便在不同构建目标间共享代码库。
Figma 通过全面过渡到 TypeScript,使得关键代码库现代化,提高了开发的效率,使代码更容易集成,构筑起了生机勃勃的开发生态。这次迁移也提供了一个重要的学习机会,Figma 团队学习了如何利用 TypeScript 的不同方面,并期待将这些新知识应用到未来的开发中。
#TypeScript
https://www.figma.com/blog/figmas-journey-to-typescript-compiling-away-our-custom-programming-language/
Skew 语言的由来
1. Skew 是 Figma 在早期为了提高播放引擎性能而创造的。
2. 它最初用于在 web 和移动端上支持 Figma 的原型查看器,但随着时间推移,Figma 意识到新员工难以上手 Skew,而且它难以与代码库其他部分集成,并缺乏 Figma 以外的开发者生态系统。
TypeScript 的优势
1. Figma 切换到 TypeScript 之后使得代码更容易集成内外部代码,利用了 TypeScript 生态系统的工具,如 linters、打包器和静态分析工具。
2. 使用了现代 JavaScript 特性如 async/await 和更灵活的类型系统,从而降低了新开发者的上手难度。
迁移过程
1. WebAssembly 的广泛支持:TypeScript 可以使用基于 WebAssembly 的 C++ 实现,以保持在移动浏览器上的性能,这在早期是不可能实现的。
2. Skew 优化的追趕:Figma 发现替换 Skew 的关键性能优化部分有了其他解决方案,这使得放弃 Skew 成为可能。
3. 转换代码库:
第一阶段:开发者继续编写 Skew 代码,新的 TypeScript 编译器显示了新代码库的样子。
第二阶段:直接从 Skew 生成 TypeScript 代码并开始使用生成的 TypeScript 代码。
第三阶段:将 TypeScript 代码作为开发的源头,并停止从 Skew 自动生成代码。
Figma 使用了源代码映射(source maps)来保持调试体验,并实施条件编译以便在不同构建目标间共享代码库。
Figma 通过全面过渡到 TypeScript,使得关键代码库现代化,提高了开发的效率,使代码更容易集成,构筑起了生机勃勃的开发生态。这次迁移也提供了一个重要的学习机会,Figma 团队学习了如何利用 TypeScript 的不同方面,并期待将这些新知识应用到未来的开发中。
#TypeScript
https://www.figma.com/blog/figmas-journey-to-typescript-compiling-away-our-custom-programming-language/
Figma
Figma’s journey to TypeScript | Figma Blog
Figma's team recently converted one of its codebases from a custom programming language to TypeScript without disrupting a single day of development.
Node.js 增加了对 TypeScript 的实验性支持。这意味着开发者可以在 Node.js 中尝试使用 TypeScript 进行开发,从而利用 TypeScript 提供的静态类型检查和其他高级功能。
#Node #TypeScript
https://github.com/nodejs/node/pull/53725
#Node #TypeScript
https://github.com/nodejs/node/pull/53725
GitHub
module: add --experimental-strip-types by marco-ippolito · Pull Request #53725 · nodejs/node
It is possible to execute TypeScript files by setting the experimental flag --experimental-strip-types.
Node.js will transpile TypeScript source code into JavaScript source code.
During the transpi...
Node.js will transpile TypeScript source code into JavaScript source code.
During the transpi...
《50 TypeScript F*ck Ups》 是一本由 Azat Mardan 编写的指南,专注于指出 JavaScript 和 TypeScript 开发者在编码过程中可能遇到的常见错误,并提供避免和修复这些错误的技巧。
我试了一下只需要填入一个邮箱就可以免费下载,但是建议有海外银行卡的同学可以支持下作者喝咖啡。
#TypeScript
https://leanpub.com/50-ts
我试了一下只需要填入一个邮箱就可以免费下载,但是建议有海外银行卡的同学可以支持下作者喝咖啡。
#TypeScript
https://leanpub.com/50-ts
Leanpub
50 TypeScript F*ck Ups
Book about TypeScript mistakes and how to avoid them
微软官方博客宣布了 TypeScript 性能提升的重大进展,目标是将 TypeScript 的性能提升 10 倍。TypeScript 团队正在开发原生版本的 TypeScript 编译器和工具,这一改进将显著加快编辑器启动速度,减少大部分构建时间,并大幅降低内存使用。
在性能提升方面,原生实现已经能够加载许多流行的 TypeScript 项目,包括 TypeScript 编译器本身。例如,对 VS Code 代码库进行测试时,当前版本的 tsc 需要 77.8 秒,而原生版本仅需 7.5 秒,速度提升了 10.4 倍;Playwright 代码库从 11.1 秒缩短到 1.1 秒,速度提升了 10.1 倍;TypeORM 代码库从 17.5 秒缩短到 1.3 秒,速度提升了 13.5 倍。这一性能提升不仅适用于大型项目,也能让小型项目受益。
在编辑器性能方面,原生语言服务将使编辑器加载大型项目的速度大幅提升。以 VS Code 为例,当前加载整个项目需要 9.6 秒,而原生语言服务仅需 1.2 秒,项目加载时间缩短了 8 倍。此外,内存使用量也减少了约一半,且未来还有进一步优化的空间。
关于版本规划,TypeScript 5.8 已发布,5.9 即将推出。基于 JavaScript 的代码库将继续发展到 6.x 系列,TypeScript 6.0 将引入一些弃用和破坏性变更,以与原生代码库对齐。当原生代码库与当前 TypeScript 达到足够的一致性后,将作为 TypeScript 7.0 发布。团队将在开发过程中定期发布稳定性和功能里程碑。
微软还计划在原生版本中引入新的编译器 API 和语言服务器协议(LSP),以更好地与其他语言对齐。团队已在 GitHub 上提供了相关代码,并发布了常见问题解答(FAQ)。此外,微软将于 3 月 13 日在 TypeScript 社区 Discord 举办问答活动,开发者可以参与讨论。
这一性能提升将为 TypeScript 和 JavaScript 开发带来巨大变革,不仅能够实现即时、全面的错误列表,还能支持更高级的重构和深度代码分析,为未来的 AI 工具提供更强大的支持。
#TypeScript #性能
https://devblogs.microsoft.com/typescript/typescript-native-port/
在性能提升方面,原生实现已经能够加载许多流行的 TypeScript 项目,包括 TypeScript 编译器本身。例如,对 VS Code 代码库进行测试时,当前版本的 tsc 需要 77.8 秒,而原生版本仅需 7.5 秒,速度提升了 10.4 倍;Playwright 代码库从 11.1 秒缩短到 1.1 秒,速度提升了 10.1 倍;TypeORM 代码库从 17.5 秒缩短到 1.3 秒,速度提升了 13.5 倍。这一性能提升不仅适用于大型项目,也能让小型项目受益。
在编辑器性能方面,原生语言服务将使编辑器加载大型项目的速度大幅提升。以 VS Code 为例,当前加载整个项目需要 9.6 秒,而原生语言服务仅需 1.2 秒,项目加载时间缩短了 8 倍。此外,内存使用量也减少了约一半,且未来还有进一步优化的空间。
关于版本规划,TypeScript 5.8 已发布,5.9 即将推出。基于 JavaScript 的代码库将继续发展到 6.x 系列,TypeScript 6.0 将引入一些弃用和破坏性变更,以与原生代码库对齐。当原生代码库与当前 TypeScript 达到足够的一致性后,将作为 TypeScript 7.0 发布。团队将在开发过程中定期发布稳定性和功能里程碑。
微软还计划在原生版本中引入新的编译器 API 和语言服务器协议(LSP),以更好地与其他语言对齐。团队已在 GitHub 上提供了相关代码,并发布了常见问题解答(FAQ)。此外,微软将于 3 月 13 日在 TypeScript 社区 Discord 举办问答活动,开发者可以参与讨论。
这一性能提升将为 TypeScript 和 JavaScript 开发带来巨大变革,不仅能够实现即时、全面的错误列表,还能支持更高级的重构和深度代码分析,为未来的 AI 工具提供更强大的支持。
#TypeScript #性能
https://devblogs.microsoft.com/typescript/typescript-native-port/