tsx 用于 TypeScript:完整指南及示例
\n\n1. 什么是 tsx 以及为什么需要它
\ntsx 是一个现代、高性能的 TypeScript 和 ESM(ECMAScript 模块)运行器,它允许您直接运行 .ts、.tsx 和 .mts 文件,而无需预先编译为 JavaScript。tsx 基于 esbuild(一个基于 Go 的超快打包工具)开发,能够实现近乎即时的 TypeScript 代码运行,使其成为开发、原型设计、脚本编写和测试的理想工具。
为什么需要 tsx?传统上,运行 TypeScript 文件需要两步过程:首先使用 tsc(TypeScript 编译器)编译代码,然后通过 Node.js 执行生成的 JavaScript。这会减慢开发迭代速度。tsx 通过将编译和执行合并为一步来解决这个问题。它会自动处理 TypeScript 语法、ESM 模块、JSX,甚至支持 node_modules 解析。本质上,tsx 是 ts-node 的替代品,但速度更快、更现代化。
tsx 相对于同类工具的主要优势:速度(使用 esbuild,比 tsc 快 10-100 倍)、开箱即用的 ESM 支持(无需为模块配置 tsconfig.json)、自动检测 TypeScript 配置,以及内置的 --watch 模式支持。tsx 非常适合:编写基于 TypeScript 的 CLI 工具、运行测试(Jest、Vitest)、创建自动化脚本、快速原型设计以及学习 TypeScript。
2. 安装
\ntsx 通过 npm(Node 包管理器)分发,可以全局安装或本地安装到项目中。建议进行本地安装以隔离项目依赖。
\n\n本地安装(推荐):
\nnpm install --save-dev tsx\n或者使用 yarn:
\nyarn add --dev tsx\n或者使用 pnpm:
\npnpm add --save-dev tsx\n\n全局安装(便于从任何位置快速访问):
\nnpm install -g tsx\n\n验证安装:
\nnpx tsx --version\n安装后,您可以使用命令 npx tsx 文件名.ts(本地安装)或 tsx 文件名.ts(全局安装)来运行 TypeScript 文件。
重要提示: tsx 需要 Node.js 版本 18 或更高版本。要使用 ESM,请确保您的 package.json 中包含 "type": "module" 字段,或者为文件使用 .mts 扩展名。
3. 快速入门 — 最小工作示例
\n创建一个包含以下内容的文件 hello.ts:
// hello.ts\nconst greet = (name: string): string => {\n return `你好,${name}!欢迎来到 tsx 的世界!`;\n};\n\nconst userName: string = "PythonLib";\nconsole.log(greet(userName));\n\n// 使用现代 JS 功能\nconst numbers: number[] = [1, 2, 3, 4, 5];\nconst doubled = numbers.map((n) => n * 2);\nconsole.log("翻倍后的数字:", doubled);\n\n// 异步代码\nconst fetchData = async (): Promise => {\n const data = await Promise.resolve({ id: 1, name: "示例" });\n console.log("异步数据:", data);\n};\n\nfetchData(); \n\n使用以下命令运行该文件:
\nnpx tsx hello.ts\n\n预期输出:
\n你好,PythonLib!欢迎来到 tsx 的世界!\n翻倍后的数字: [ 2, 4, 6, 8, 10 ]\n异步数据: { id: 1, name: '示例' }\n\n这个示例演示了 tsx 的基本工作方式:它