Node.js v22.6.0 发布,可以直接运行 TS 了!

Node.js v22.6.0 近日刚发布,本次包含一个新功能:通过 --experimental-strip-types 标志提供了实验性的 TypeScript 支持。这意味着在 Node 中可以直接运行 TS 了!

第一步,请先更新您的 Node.js 版本为 v22.6.0。不会安装的参考这篇文章 别再这样安装 Node.js 了,试试新官网推荐的这种方式!

第二步,新建 app.ts 文件,编写 TS 代码,运行时记得加上实验性标志 node --experimental-strip-types app.ts

f17d29597c88de73f1eb0e85f6d1aceb.png

但是这输出结果是不是不太对?当前 Node.js 中支持的 TS,只是在运行时删除了类型注释。也就是说运行时不会做类型校验。

导入类型要加 type 关键词

由于类型剥离的性质,type 关键字对于正确剥离类型导入必不可少。如果没有 type 关键字,Node.js 会将导入视为值导入,这将导致运行时错误。

例如,有个 user.ts 文件

// user.ts
export type User = {
  name: string;
}
export function getUser(id: string) {
  const user: User = {
    name: 'hhh'
  }
  return user;
}

app.ts 文件中使用,如下所示:

// app.ts
import type { User } from "./user.ts";
import { getUser } from "./user.ts";

const user: User = getUser('1');
console.log(user)

Node.js 中当前试验性支持的 TS 还存在一些限制

  • 仅支持内联类型注释,不支持 enums、namespaces 之类的功能。

  • 强制使用类型关键字进行类型导入,以避免运行时错误。

  • 不读取 tsconfig.json 文件

  • import 导入时必须指定文件扩展名

  • 默认情况下,在 node_modules 中禁用 TypeScript。

此前发布 Node.js 将原生支持 TS!

参考

  • https://nodejs.org/docs/latest/api/typescript.html

  • https://nodejs.org/en/blog/release/v22.6.0

- End -

敬请关注「Nodejs技术栈」微信公众号,期望与志同道合的你一起打造优质 “Nodejs技术栈” 交流群,一起互相学习进步!可长按下方二维码添加【五月君】个人微信备注 “Node” 邀请入群。

972aa440e483335c737eaed25331f278.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值