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