从 JavaScript 到 TypeScript 3 - 引入和编译
随着应用的庞大,项目中 JavaScript 的代码也会越来越臃肿,这时候许多 JavaScript 的语言弊端就会愈发明显,而 TypeScript 的出现,就是着力于解决 JavaScript 语言天生的弱势:静态类型。
前端开发 QQ 群:377786580
这篇文章首发于我的个人博客 《听说》,系列目录:
- 《从 JavaScript 到 TypeScript 1 - 什么是 TypeScript》
- 《从 JavaScript 到 TypeScript 2 - 基础特性和类型推导》
- 《从 JavaScript 到 TypeScript 3 - 引入和编译》
- 《从 JavaScript 到 TypeScript 4 - 装饰器和反射》
- 《从 JavaScript 到 TypeScript 5 - express 路由进化》
- 《从 JavaScript 到 TypeScript 6 - vue 引入 TypeScript》
在上一篇文章 《从 JavaScript 到 TypeScript 2 - 基础特性和类型推导》 中我们讨论了一些基本的 TypeScript 类型特性。许多人摩拳擦掌跃跃欲试,这篇文章我们主要介绍如何引入和编译 TypeScript。
快速使用
安装:
1 |
|
编译:
1 |
|
如果我们想快速测试一个文件,可以使用 ts-node,ts-node
可以让我们通过命令直接执行 *.ts
文件:
1 |
|
关于 tsc
,一般来说,全局安装的方案并不是很棒,我们可以把 typescript 安装到本地项目目录中:
1 |
|
这样在 package.json
的 scripts
中可以引用 tsc
命令:
1 |
|
使用 npm run build
命令即可启用 tsc
命令编译本地目录,typescript
会去查找目录下的 tsconfig.json
配置文件。
引入 TypeScript 非常简单,TypeScript 的文件后缀为 ts
,迁移 TypeScript 只需要将项目中,业务代码的 *.js
修改为 *.ts
即可。不过在此之后你会看到大量的报错,然后就是按照 TypeScript 的规则,解决这些报错即可:)
tsconfig.json
tsconfig.json
是 TypeScript 的编译选项文件,通过配置它来定制 TypeScript 的编译细节。
- 直接调用
tsc
,编译器会从当前目录开始去查找tsconfig.json
文件,逐级向上搜索父目录。 - 调用
tsc -p
,可以指定一个包含tsconfig.json
文件的目录进行编译。如果没有找到tsconfig.json
文件,TypeScript
会编译每个文件并在对应文件的同级目录产出。
如果你要编译的是一个 Node 项目,请先安装 Node 编译依赖:
npm i @types/node --save-dev
,否则会出现 Node 内置模块无法找到的情况。
一个 tsconfig.json
文件描述:
1 |
|
完整 tsconfig
配置选项的可以参考 这里,或者 tsconfig 的 json-schema。
注意: TypeScript 不会做 Polyfill
,例如从 es6
编译到 es5
,TypeScript 编译后不会处理 es6
的那些新增的对象的方法,如果需要 polyfill
需要自行处理!
完整的编译选项请参阅 TypeScript 中文网 和 TypeScript 官网。
编译
大多数前端已经使用各种各样的构建工具,完整构建工具集成列表参见 这里
对于 Node 项目,建议搭配 gulp
使用。不过个人更喜欢通过 npm scripts
脚本组合命令,然后直接使用 tsc
编译,例如我自己的编译方案。
项目目录为:
1 |
|
package.json
中 scripts
脚本如下:
1 |
|
- 使用
nodemon
监听整个server
目录文件改动并执行脚本 npm run clean
用于清空编译输出目录npm run build:ts
用于编译server
目录下的 TypeScript 文件npm run server
用于启动编译后的 node 服务器。
平常开发只需要 npm run dev
,生产使用 npm run build
产出文件即可。
visual studio code 集成和 debug
编译任务
visual studio code
编译 TypeScript
非常简单,根据上面我自己的组合命令,只需要在 vs code
的任务中加入编译脚本即可(npm run build-ts
):
./.vscode/task.json
如下:
1 |
|
按 control+shift+B
即可编译。
debug
在 ./.vscode/launch.json
中加入如下代码即可调试,记得要在 tsconfig.json
里打开 sourceMap
选项:
1 |
|
然后在 vs code
中给代码打上断点,按 F5,一步步调试即可。
结语
我们简单总结一下:
- 使用
ts-node
可以让我们直接运行*.ts
文件(不过只建议临时运行代码或特殊应用场景使用) - 使用
typescript
产出的tsc
命令来编译*.ts
文件到*.js
,然后我们运行编译出来的*.js
文件即可 - 使用
tsconfig.json
配置 TypeScript 的编译选项
在下一篇,我们将了解逐渐盛行的 ECMAScript 特性在 TypeScript 上的应用:《从 JavaScript 到 TypeScript 4 - 装饰器和反射》
TypeScript 中文网:https://tslang.cn/
TypeScript 视频教程:《TypeScript 精通指南》