Node.js v23.6.0 最近发布了,它带来了一个重大更新:--experimental-strip-types 的取消标记。这意味着 Node.js 现在可以原生运行 TypeScript 文件,无需任何额外配置。
TypeScript 通过引入可选的静态类型和高级功能(例如接口、泛型和类型推断)来增强 JavaScript。多年来,它已经成为大规模 JavaScript 应用程序的事实上的标准。通过与 Node.js 的集成,后端开发人员可以更轻松地访问 TypeScript。
要在 Node.js 中执行 TypeScript 文件,只需运行:
node index.ts
除了 .ts 文件之外,Node.js 还支持 .mts 和 .cts 文件,但不支持 .tsx。
Node.js 使用 swc 版本来去除类型注释,留下可以执行的纯 JavaScript 代码。
在没有捆绑程序的环境中使用 TypeScript 时,您之前可能编写过如下导入:
import { myFunction } from './my-module.js';
而不是来自“./my-module.ts”
这是为什么呢? TypeScript 编译器不会修改“./my-module.js”等模块扩展,因此开发人员必须使用与转译的 JavaScript 输出一致的扩展。
但是,由于 Node.js 使用文件扩展名来确定模块类型,因此您必须在导入中显式引用 TypeScript 文件:
import { myFunction } from './my-module.ts';
此更改是必要的,因为 Node.js 依赖文件扩展名来确定模块类型。相比之下,TypeScript 编译器之前保留了“./my-module.js”等模块说明符不变,要求开发人员适应转译的输出。
Node.js 在运行 TypeScript 文件时不执行类型检查。为了确保类型安全,您需要在本地运行 TypeScript 编译器 (tsc) 或类似工具,例如:
tsc --watch
此外,正确配置 tsconfig.json 对于类型检查和编码之间的一致性至关重要:
node index.ts
导入类型时需要 type 关键字 - 否则类型剥离不会删除它们。
import { myFunction } from './my-module.js';
不支持某些特定于 TypeScript 的功能,包括:
要启用这些功能,您可以添加 --experimental-transform-types 标志。
TypeScript 允许通过转译在当前 JavaScript 引擎上运行即将推出的 JavaScript 功能(例如装饰器)。
但是,由于 Node.js 仅剥离 TypeScript 类型,因此不支持此类功能。
根据 Marco on X 的说法,Node.js v22 将支持 TypeScript,但 v20 不会。
Leapcell 是用于 Web 托管、异步任务和 Redis 的下一代无服务器平台:
多语言支持
免费部署无限个项目
无与伦比的成本效率
简化的开发者体验
轻松的可扩展性和高性能
在文档中探索更多内容!
在 X 上关注我们:@LeapcellHQ
阅读我们的博客
以上是Node.js v:内置 TypeScript 支持终于来了的详细内容。更多信息请关注PHP中文网其他相关文章!