Node.js原生支持TypeScript?老铁这眼光,我真的服了!

共 3954字,需浏览 8分钟

 ·

2024-07-30 20:48












本公众号由以下老铁赞助,感谢他们❗️



























品牌位赞助招募中









 合作 | 共赢 | 生态 | 发展 





















01









前言











记得早在两年前,麒麟子就说如果开发游戏服务器,他只用两种语言:Node.js 或 Go,但他最后还是选 Node.js。


因为 Cocos Creator 3.x 全面转向 TypeScript 语言,能够驾御更大、更复杂的游戏项目。


后端使用 Node.js 的话,那只需要一门编程语言,就可以同时搞定前后端开发,何乐而不为呢?


说真的不得不佩服,麒麟子对技术的敏锐与长远眼光!








02









Node.js实验性功能支持TypeScript
















最近,Node.js 社区果然传来激动人心的消息:Node.js 将通过实验性功能,原生支持 TypeScript!








相信做 Web 前端或使用 Node.js 开发服务器的老铁,都喜欢 Node.js 的轻量与高效。


但,随着 TypeScript 的兴起,许多老铁都希望 Node.js 能直接运行 TypeScrip 代码,而不是要先将 TS 代码编译成 JS 再运行。


现在,这一期待即将成为现实!


现在你只需通过 github 合并 PR#53725,Node.js 引入了一项新特性:通过设置 --experimental-strip-types 参数,就可以直接执行 TypeScript 文件了。


Node.js 将自动将 TypeScript 源代码转译为 JavaScript 源代码,无需手动安装转译工具。通过简单的命令 node index.ts 直接运行 TS 文件。


需要注意的是,转译过程中所有类型信息将被丢弃,Node.js 称之为 "type stripping"(类型剥离)。


例如,原本的 TypeScript 代码:


const foo: string = "foo";

将被转译为:


const foo = "foo";

虽然这一功能很是让人兴奋,不过目前它还存在一些限制,它还不支持 TypeScript 的一些高级特性,如:枚举和命名空间。


还有 .ts 文件不能使用 .js 扩展名,也无法在 node_modules 中运行 TypeScript 文件。








03









Node.js支持TS路线图











不过这只是实验性支持的第一步,Node.js 团队已经在 GitHub 上发布了详细的实验性支持 TS 路线图。


链接:https://github.com/nodejs/loaders/issues/217


Node.js 支持 TypeScript 的路线图可以概括为以下几个主要步骤:



  1. 第一步:初始实现



    • 引入 --experimental-strip-types 标志,用于概念验证和收集项目合作者的反馈。


    • 目前的限制包括不支持需要转换的 TypeScript 特性(如枚举、命名空间等),没有 .js 扩展名支持,不支持在 node_modules 中运行 TypeScript,以及没有源映射。



  2. 第二步:特性解耦



    • 类似于 Node.js 中 npm 的独立升级方式,考虑将 TypeScript 编译器作为可独立升级的组件。


    • 创建一个可从 npm 下载并包含当前 Node 使用的 API 的包,允许用户根据需要升级 TypeScript 版本。



  3. 第三步:性能优化



    • 在项目稳定运行的基础上,开始考虑性能问题。


    • 考虑将 SWC 编译器集成到 Node.js 中,可能的优化方法包括使用 Rust、WebAssembly 或静态库等。



  4. 第四步:增加更多特性



    • 扩展对 TypeScript 特性的支持,包括需要转换的特性。


    • 考虑允许在 node_modules 中运行 TypeScript 文件,尽管这一点目前尚未达成共识。


    • 提供额外的实用工具和配置选项,如转换器 API、tsconfig 支持等,以提高用户体验。




后续将会有更多特性得到支持,新特性必须做到不破坏现有的生态系统,同时保持 Node.js 的稳定性和性能。



整个过程,Node.js 团队会持续收集社区的反馈,并根据反馈进行调整,避免引入可能导致不稳定的因素,同时提供足够的灵活性以适应 TypeScript 的新特性和变化。






你对于 Node.js 原生支持 TypeScript,你怎么看呢?欢迎在评论区留言分享你的看法!


今天的分享就到这里,感谢点赞再看!我们下期再见!






















本公众号由以下老铁赞助,感谢他们!













游戏开发,副业变现



晓衡的愿景是助力 1000 位个人开发者


一年独立挣钱10W+





欢迎加晓衡微信

















IAA小游戏同质化有点严重!背包like成为流量密码?




无需版号可上线测试?广东省已率先开始!




一群看穿市场的开发者们!7月精品推荐




从入门到爆款?16套视频教程助你起飞(免费)




用这个看微信小游戏排行榜,真是太方便了!




6月微信小游戏排名TOP!用户喜欢什么样的游戏?


2024小游戏出海!11家门户渠道要记住了




吃透这2个指标!真正读懂微信「畅玩榜」












浏览 159
1点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
1点赞
评论
收藏
分享

手机扫一扫分享

分享
举报