ts-node 用于 TypeScript:完整指南及示例

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

什么是 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.ts


2. 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"


3. ts-node --compiler-options

推荐