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

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

71d87ff63e6e9674001d7c3ce510158a.png0e55b6cbef05c0c5b2a2e417726ba5f4.png

1a5ff3170ba23c5bbdd731d778ed06d9.png

b525a8c834441b98f195810b0dde9c6f.png

a8b84a55a95cae7952d2d436422191ce.png

品牌位赞助招募中

f2895ff0db2e6592e2a9dae3146a780b.png

 合作 | 共赢 | 生态 | 发展 

27f3b081ed925bd61126ce8d3b09d0dc.png

01

前言

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

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

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

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

02

Node.js实验性功能支持TypeScript

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

3ac4c2ebf01a2dc0f772015299c4f207.png

相信做 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 路线图。

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

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

  1. 第一步:初始实现

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

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

第二步:特性解耦

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

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

第三步:性能优化

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

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

第四步:增加更多特性

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

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

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

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

0785c03268df6eac1364f18e08401837.png

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

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

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


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

b831a3e48f5ea37735bf34d6169af0b9.png24ad1a29ed2313dfd88b4ba80bb0dbdf.png

9725c69474939866327ecd43388701b3.png

8717ffa56b8d04c694c50948f0b97471.png

游戏开发,副业变现

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

一年独立挣钱10W+

3534ae59af86a5d9d1cf4abbde29fa08.jpeg

欢迎加晓衡微信

0978d32fac91cb16f8987e65e0f58b78.gif

28e8f3e3b00883b95d7ed81be551cc15.gif

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

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

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

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

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

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

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

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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值