Total Pageviews

5,389,981

Thursday, 20 March 2025

TS 文件的快速执行:ts-node 与 ts-node-dev


如果想执行 TypeScript 文件,就像 node index.js 这样快速地验证代码逻辑,这个时候你就需要 ts-node 以及 ts-node-dev 这一类工具了。

它们能直接执行 ts 文件,并且支持监听文件重新执行。同时,它们也支持跳过类型检查这一步骤来获得更快的执行体验。

ts-node 直接执行 ts 文件

  1. 将 ts-node 与 typescript 安装到全局
npm i ts-node typescript -g
  1. 在项目中执行以下命令创建 TypeScript 的项目配置文件: tsconfig.json
npx --package typescript tsc --init // 如果全局安装了 TypeScript,可以这么做 tsc --init
  1. 创建一个 TS 文件
# index.ts console.log("Hello TypeScript");
  1. 使用 ts-node 执行
ts-node index.ts

如果一切正常,此时你的终端能够正确地输出字符。

ts-node 还可以使用命令参数做定制化执行,如有需要可以自行查看官方文档

ts-node-dev 监听文件重新执行

ts-node-dev 基于 node-dev 与 ts-node

在重启文件进程时共享同一个 TS 编译进程,避免了每次重启时需要重新实例化编译进程等操作

  1. 全局安装
npm i ts-node-dev -g
  1. 执行文件

ts-node-dev 在全局提供了 tsnd 这一简写,你可以运行 tsnd 来检查安装情况。最常见的使用命令是这样的:

bash
ts-node-dev --respawn --transpile-only app.ts
  • respawn 选项启用了监听重启的能力
  • transpileOnly 提供了更快的编译速度。

你可以查看官方仓库来了解更多选项,但在大部分场景中以上这个命令已经足够了

更方便的类型兼容性检查: declear 关键字

某些时候,我们在进行类型比较时,需要使用一个具有具体类型的变量与一个类型进行赋值操作,比如下面这个例子中:

ts
interface Foo { name: string; age: number; } interface Bar { name: string; job: string; } let foo:Foo = { name: 'silon', age: 18 } let bar:Bar = { name: 'silon', job: 'cook' } foo = bar;

“只是想要进行类型比较”的前提下,其实并没有必要真的去声明两个变量,即涉及了值空间的操作。 我们完全可以只在类型空间中(你可以理解为用于存放 TypeScript 类型信息的内存空间)比较这些类型,只需要使用 declare 关键字:

interface Foo { name: string; age: number; } interface Bar { name: string; job: string; } declare let foo: Foo; declare let bar: Bar; foo = bar;

No comments:

Post a Comment