TypeScript 如何用 ts-node 运行

日常写前端代码的你,是不是也碰到过这种情况:写了半天 TypeScript 代码,最后还得转成 JavaScript 才能跑,光是编译这步就费了不少功夫?其实有个工具能跳过编译,直接运行 .ts 文件,那就是 ts-node。今天就用你能听懂的话,把这个好用的工具讲明白。

先搞懂:ts-node 到底是啥

TypeScript 写的代码不能直接被 Node.js 识别,就像你用中文写的纸条,得先翻译成英文别人才能看懂。平时我们用 tsc 命令,就是先把 TypeScript 翻译成 JavaScript,再让 Node.js 跑这个 JS 文件。而 ts-node 就像一个“临时翻译+跑代码”的小助手,它会实时把你写的 TypeScript 转成 Node.js 能懂的代码,转完直接运行,不用你手动生成中间的 JS 文件,省了好多步骤。举个生活化的例子:你想给朋友展示一道新学的菜,不用先把菜重做一遍,ts-node 就像直接把你刚写的菜谱(TypeScript)当场变成能入口的成品(可运行代码),朋友马上就能尝。

TypeScript 如何用 ts-node 运行

第一步:给项目装 ts-node

用之前得先把它装到你的项目里,打开电脑的命令行(比如 VS Code 里的终端,或者电脑的 cmd),先确保你已经装了 Node.js(没装的话去官网下最新版就行,装完在终端输 node -v 能显示版本号就对了)。然后在项目文件夹里,输下面的命令:

npm install ts-node --save-dev

如果你用的是 yarn,就换成 yarn add ts-node --dev。这个命令会把 ts-node 装到你当前项目的“开发依赖”里,不会影响其他项目,很安全。

第二步:写个简单的 TypeScript 文件试试

装完工具,咱们写个小例子试试手。在项目文件夹里新建一个叫 hello.ts 的文件,打开它,写几行很简单的代码:

`typescript

// 定义一个打招呼的函数,参数是名字,类型要求是字符串

function sayHello(name: string): string {

return 你好呀,${name}!;

}

// 调用函数,传入“小明”

console.log(sayHello('小明'));

`

这就写好一个带类型的 TypeScript 代码啦,里面的 : string 就是 TypeScript 给参数加的类型限制,比如你传数字的话,它会提前报错,比纯 JavaScript 更不容易出错。

第三步:用 ts-node 直接运行代码

现在回到终端,确保你还在刚才那个项目文件夹里,输下面的命令:

npx ts-node hello.ts

输完按回车,你会看到终端马上输出:你好呀,小明!——这就成功啦!是不是比用 tsc 编译再 node 运行快多了?

如果遇到报错,别慌,大概率是这两个小问题:一是没装 Node.js,二是输错了文件名字,或者文件路径不对,检查一下命令里的文件名和你新建的文件是不是一致就行。

小技巧:运行多个文件或项目根目录运行

要是你写的 TypeScript 项目有多个文件,比如 A 文件引用了 B 文件,直接用 ts-node 跑入口文件就行,不用管其他依赖。比如有个主文件 index.ts,里面 import 了其他模块,直接输 npx ts-node index.ts 就可以,ts-node 会自动帮你处理模块引用。

还有个偷懒的小方法:如果每次都要输 npx ts-node,可以把它加到 package.json 的 scripts 里,打开项目里的 package.json,找到 "scripts" 这一段,加一行:

"start": "ts-node hello.ts"

之后每次想运行,直接在终端输 npm start 就自动跑 hello.ts,不用每次敲长命令,就像你把常用的路线存成导航快捷方式一样。

最后提个小注意点

ts-node 虽然方便,但它主要用在开发测试,比如快速验证一段 TypeScript 逻辑,或者跑小型的本地脚本。如果是要部署到线上的项目,还是建议用 tsc 先编译成稳定的 JavaScript 再上线,毕竟 ts-node 的“实时翻译”会比纯编译多一点性能消耗,生产环境还是用更稳定的编译产物更稳妥。

上一篇 PHP 如何开启扩展