1、问题
ts补充了js弱类型的问题,在开发过程中使用类型提示能规避很多低级的错误,且能较大提高开发效率;但是node环境自身不支持ts,需要先将ts文件编译成js文件才能运行,效率比较低。
2、解决
那本地开发如何支持ts实时编译?以本地的test.ts文件举例,可以使用下面2种方式:
(1)nodemon+tsc
- 全局安装
nodemon和typescript
npm i nodemon typescript -g
- 使用typescript实时编译文件,生成
test.js文件
tsc test.ts -w
- 使用nodemon实时监听文件变化
nodemon test.js
需要两个终端配合实现实时运行ts,且会生成中间js文件。
(2)ts-node-dev(推荐)
ts-node-dev在node-dev基础上进行了优化,专门针对TypeScript环境设计,利用ts-node进行编译,并在进程重启之间共享编译状态,从而显著提高了热重载的速度。
- 全局安装
ts-node-dev
npm i ts-node-dev -g
- 配置实时运行参数
// --respawn:保持文件变化监听
// --transpile-only:跳过类型检查,提高编译速度
ts-node-dev --respawn --transpile-only test.ts
// 可使用缩写 tsnd
tsnd--respawn --transpile-only test.ts
3、其他
可以在项目根目录使用tsconfig.json文件对ts进行配置,如下所示:
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": false,
"noImplicitAny": false
}
}