Node.js 如何直接运行 TypeScript 文件
区分 Node.js 原生类型剥离、tsx 与 tsc 编译三条运行路径,说明版本条件、import 后缀、tsconfig 和类型检查的限制。
运行 TypeScript 前,先确认项目需要哪些语法和构建功能。 只含可擦除类型的脚本可使用 Node.js 原生类型剥离;依赖完整 TypeScript 转换、路径别名或 JSX 的项目,应使用相应工具链。
原生运行
Node.js 从 22.6.0 引入类型剥离,在 22.18.0 和 23.6.0 起默认启用。对支持该能力的版本,可以直接运行:
node example.ts
早期 22.x 版本需要 --experimental-strip-types。请以当前使用的 Node.js 版本文档为准。
原生模式不做类型检查,也不读取 tsconfig.json 来转换代码。枚举、包含运行时代码的 namespace 等需要生成 JavaScript 的语法不能仅靠类型剥离运行;Node.js 26 已移除旧的 --experimental-transform-types 标志,不能把它当作通用解决办法。
用 tsx 运行
npm install --save-dev tsx
npx tsx example.ts
npx tsx watch example.ts
tsx 适合需要转译的开发脚本和调试工作流。它不会代替 TypeScript 类型检查;项目可以单独执行 npx tsc --noEmit。
先编译再部署
npm install --save-dev typescript
npx tsc
node dist/example.js
此例假定 tsconfig.json 已设置输出目录为 dist。构建与部署时同时确认模块类型、资源文件和依赖路径。
import 后缀怎么写
原生运行 .ts 文件时,相对导入应指向实际文件,例如 import { run } from './run.ts'。编译输出 JavaScript 的项目需要根据模块配置和 TypeScript 版本安排扩展名转换,不能简单要求所有场景都写 .js。
需要生成 JavaScript、检查类型和读取项目配置,是三个不同问题。选定执行路径后,在项目固定的 Node.js 与 TypeScript 版本下验证即可。