什么是 ts-node 以及为什么需要它?
ts-node 是一个用于 Node.js 的 TypeScript 引擎,它允许直接执行 TypeScript 文件,无需预先编译成 JavaScript。它既可以作为 REPL(读取-求值-输出循环),也可以作为命令行工具,实现 TypeScript 与 Node.js 生态系统的无缝集成。
主要使用场景:
- 快速开发与原型设计 — 无需等待每次修改的编译过程
- 运行脚本 — 在生产环境中执行 TypeScript 文件(需谨慎)
- 测试 — 运行用 TypeScript 编写的测试
- 交互式开发 — 用于 TypeScript 实验的 REPL 模式
- 项目迁移 — 从 JavaScript 逐步过渡到 TypeScript
与标准方法(通过 tsc 编译,然后通过 node 运行)不同,ts-node 使开发过程更加流畅和快速。
安装 ts-node
通过 npm(Node.js 包管理器)进行安装。对于 Python 开发者来说:这类似于 pip install。
# 全局安装(随处可用)npm install -g ts-node
# 本地安装(推荐用于项目)npm install --save-dev ts-node
# 与 TypeScript 一起安装(如果尚未安装)npm install --save-dev ts-node typescript
# 使用特定版本的 TypeScriptnpm install --save-dev ts-node@10.9.2 typescript@5.3.3安装后检查版本:
ts-node --version# 输出:v10.9.2快速入门及代码示例
创建一个文件 hello.ts:
// hello.tsinterface Greeting { name: string; age: number;}
function greet(person: Greeting): string { return `你好,${person.name}!你 ${person.age} 岁了。`;}
const user: Greeting = { name: "阿列克谢", age: 30 };console.log(greet(user));无需编译直接运行:
ts-node hello.ts# 输出:你好,阿列克谢!你 30 岁了。作为对比,常规方法需要两个步骤:
tsc hello.ts # 编译为 hello.jsnode hello.js # 运行编译后的文件ts-node 的主要方法和功能
1. ts-node [file.ts] — 基本文件运行
描述: 用于执行 TypeScript 文件的主要命令。ts-node 会自动编译并执行代码。
参数:
file.ts— TypeScript 文件的路径--project或-P— tsconfig.json 的路径--transpile-only— 仅进行转译(更快,但不进行类型检查)
示例:
# 常规运行ts-node app.ts
# 指定配置文件ts-node --project tsconfig.prod.json app.ts
# 仅转译(更快)ts-node --transpile-only app.ts2. ts-node --eval — 执行字符串中的代码
描述: 允许执行作为字符串传递的 TypeScript 代码,无需创建文件。
参数:
-e或--eval— 包含 TypeScript 代码的字符串-p或--print— 输出执行结果
示例:
# 简单表达式ts-node -e "console.log('Hello from ts-node!')"
# 使用 TypeScript 特性ts-node -e "interface User { name: string }const user: User = { name: '玛丽亚' };console.log(user.name);"
# 输出结果ts-node -p "1 + 2"