如何从命令行运行 TypeScript:3 种实用方法

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

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

开始课程

如何从命令行运行 TypeScript:从入门到精通

\n\n

您用 TypeScript 编写了第一个脚本。一切看起来都很棒:强类型、简洁的语法、IDE 中的自动补全。但当您打开终端并输入 node script.ts 时,Node.js 却报错了。熟悉吗?

\n\n

TypeScript 是 JavaScript 的超集,Node.js 无法直接执行 .ts 文件。在本文中,我们将介绍所有从命令行运行 TypeScript 的实用方法。您将了解快速运行与生产构建的区别,何时使用 ts-node,何时使用 tsx,以及如何避免在工具中迷失方向。

\n\n

我们基于 Stack Overflow 上一个热门问题(超过 50 万次浏览)进行讲解,但不仅仅是给出答案,而是提供方法的全面对比。让我们开始吧!

\n\n

为什么 Node.js 无法理解 TypeScript?

\n\n

在开始使用工具之前,让我们先了解本质。当您编写:

\n\n
const greet = (name: string): string => {\n  return `Hello, ${name}!`;\n};\nconsole.log(greet('PythonLib'));
\n\n

Node.js 看到 : string 却不知道如何处理。JavaScript 不支持静态类型作为语法的一部分。因此,TypeScript 需要先转译(转换)为 JavaScript,然后再运行。

\n\n

有两种根本不同的方法:

\n
    \n
  • 两步法:先编译 tsc script.ts,再运行 node script.js。
  • \n
  • 一步法:使用工具“即时”完成这两个操作(JIT 编译)。
  • \n
\n\n

我们将介绍这两种方法,但先从最流行的一步法开始。

\n\n

方法 1:ts-node — 经典之选

\n\n

ts-node 是 Node.js 的 TypeScript 执行引擎。它在内存中编译代码并立即传递给 Node.js。这是从命令行运行 TypeScript 最古老且经过验证的方法,无需额外操作。

\n\n

安装与运行

\n\n
npm install -g ts-node typescript @types/node\nts-node script.ts
\n\n

搞定。您的文件将执行,而不会创建中间 JS 文件。在底层,ts-node 使用标准的 TypeScript 编译器 (tsc),但对开发者透明。

\n\n

示例:使用 API

\n\n
// api-demo.ts\nimport axios from 'axios';\n\ninterface Post {\n  userId: number;\n  id: number;\n  title: string;\n}\n\nasync function fetchFirstPost(): Promise<Post> {\n  const response = await axios.get<Post>('https://jsonplaceholder.typicode.com/posts/1');\n  return response.data;\n}\n\nfetchFirstPost().then(post => console.log(post.title));\n// 输出:sunt aut facere repellat provident occaecati excepturi optio reprehenderit
\n\n

运行:ts-node api-demo.ts。结果立即显示在控制台中。

\n\n

ts-node 的优缺点

\n\n
    \n
  • + 简单:一条命令代替两条。
  • \n
  • + 支持 tsconfig.json:您的所有 TypeScript 设置都会被考虑。
  • \n
  • + REPL:不带参数运行 ts-node 命令会打开交互式 TypeScript shell。
  • \n
  • - 速度:每次运行时都会进行编译,在大型项目中这一点很明显。
  • \n
  • - 内存消耗:长时间运行(例如在 watch 模式下)可能会占用较多 RAM。
  • \n
\n\n

何时使用:用于脚本、原型、小型工具。如果您需要从命令行快速运行 TypeScript 文件且无需配置,ts-node 是您的选择。

\n\n

方法 2:tsx — 现代且快速的继承者

\n\n

tsx (TypeScript Execute) 是一个较新的工具,

博客

书籍推荐