Node.js 将原生支持 TS!

Node.js 近日刚合并了一个 PR#53725,主要内容是通过设置 flag --experimental-strip-types,使得可以在 Node.js 中直接执行 TypeScript 文件Node.js 会自动将 TypeScript 源代码转译为 JavaScript 源代码,不需要手动安装依赖来做转译了 。在这个转译过程中,不会进行类型检查,所有的类型信息都会被丢弃

关于动机。在以往的所有调查中,用户都表达了这个需求,必须承认这一点不容忽视,用户有需求就要重视。同时,近年来 TypeScript 的普及率也是越来越高(现在不学 TS 感觉自己都要被淘汰了,哈哈哈...)。

通过 Node.js 内置 TS 功能,用户是不需要安装外部依赖和一些加载器的。

例如,直接运行 node index.ts

ts 复制代码
const foo: string = "foo";

转换后的代码为:

js 复制代码
const foo = "foo";

其他运行时环境也会将一些 TypeScript 特有的功能转化为 JavaScript,例如枚举(Enums),而枚举在 JavaScript 中是不存在的。至少在这个 PR 的初始阶段,不会进行这种转化,这意味着使用 Enum, namespaces 等特性将不可行。

在工具上选择 @swc/wasm-typescript,因为这考虑到了简洁性,其它工具可能会将 Rust 和 Go 也添加到工具链中,而 @swc/wasm-typescript 只是一个包含 wasm 文件和一个用于绑定 js 文件的小包,并且 Swc 目前也被 Deno 用于同样的目的,还经过了实战测试 😄。

目前还存在一些限制

  1. 不支持需要转化的 TypeScript 特性(如枚举、命名空间等)。
  2. .ts 文件不支持 .js 扩展名。
  3. 无法运行 node_modules 中的 TypeScript 文件。
  4. 不支持源映射,但由于我们执行空格处理(用空格替换移除的代码),这样就不需要改变原始错误堆栈,因此不需要源映射,参考 Sourcemaps 问题

该 PR 只是实现实验性支持 TS 的第一步,还有一些工作要做,详细参考实验性支持 TS 路线图

最后,关于 Node.js 将支持 TS 你怎么看?欢迎评论区留言!

相关推荐
jump68012 分钟前
url输入到网页展示会发生什么?
前端
诸葛韩信16 分钟前
我们需要了解的Web Workers
前端
brzhang21 分钟前
我觉得可以试试 TOON —— 一个为 LLM 而生的极致压缩数据格式
前端·后端·架构
yivifu40 分钟前
JavaScript Selection API详解
java·前端·javascript
这儿有一堆花42 分钟前
告别 Class 组件:拥抱 React Hooks 带来的函数式新范式
前端·javascript·react.js
十二春秋1 小时前
场景模拟:基础路由配置
前端
六月的可乐1 小时前
实战干货-Vue实现AI聊天助手全流程解析
前端·vue.js·ai编程
Q_Q5110082851 小时前
python+django/flask的莱元元电商数据分析系统_电商销量预测
spring boot·python·django·flask·node.js·php
一 乐1 小时前
智慧党建|党务学习|基于SprinBoot+vue的智慧党建学习平台(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·学习
BBB努力学习程序设计2 小时前
CSS Sprite技术:用“雪碧图”提升网站性能的魔法
前端·html