点击上方 Nodejs技术栈,关注公众号
回复加群,加入 Node.js 技术交流群
此前发布 Node.js 已通过 --experimental-strip-types
标志实验性支持 TypeScript。这只是 Node.js 实验性支持 TypeScript 道路的第一步。对于一些 TypeScript 专有的功能,例如枚举、命名空间、装饰器等… 是不支持的。
近日,Node.js 又迈出了实验性支持 TypeScript 的第二步,在最新的 v22.7.0 版本中通过实验性标志[1] --experimental-transform-types
可将一些 TypeScript 专有的语法转为 JavaScript 代码。
如下例所示:
enum Color {
Red = 'red',
Green = 'green',
Blue = 'blue',
}
function foo(color: Color) {
console.log(color);
}
foo(Color.Red);
在 Node.js 实验性支持 TypeScript 的路线图中,将这一步骤描述为 “解耦”,从 Node.js 的稳定性上来讲,支持太多的 TypeScript 语法会让 Node 变得不稳定,发生重大变化的可能性就越大,而且无法及时了解新功能。
在 Node.js 中支持一个可以单独升级的东西已经有了先例,那就是 NPM。虽然,每次安装 Node.js 会为我们捆绑一个默认的 npm 版本,但是 npm 是可以单独升级的。
同样的也可以为 TypeScript 转译器做同样的事情。于是,创建了独立加载器 Amaro[2],在 npm 上可以搜索到这个库。
如果 TypeScript 发布我们不支持的新功能或重大更改,或者用户想要使用新的实验性功能,他们可以单独升级。这确保用户不会被锁定。
参考资料
[1]
最新的 v22.7.0 版本中通过实验性标志: https://github.com/nodejs/node/pull/54283
[2]Amaro: https://github.com/nodejs/amaro/pull/47
- End -
敬请关注「Nodejs技术栈」微信公众号,期望与志同道合的你一起打造优质 “Nodejs技术栈” 交流群,一起互相学习进步!可长按下方二维码添加【五月君】个人微信备注 “Node” 邀请入群。