Node.js 终于可以直接运行 TS 了!

科技   2024-08-09 10:29   福建  

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

第一步,请先更新您的 Node.js 版本为 v22.6.0

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

但是这输出结果是不是不太对?当前 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。

参考

  • https://nodejs.org/docs/latest/api/typescript.html
  • https://nodejs.org/en/blog/release/v22.6.0

全栈修仙之路
专注分享 TS、Vue3、前端架构和源码解析等技术干货。
 最新文章