文章目录
- 编译程序
- --watch和-w
- 工程引用
- build构建模式
- solution模式
Typescript的编译器是能够对Typescript代码和JavaScript代码进行静态类型检查,并且把Typescript代码转化为JavaScript代码。
Typescript编译器程序位于Typescript语言安装目录下的lib文件夹中。
Typescript编译器对外提供了一个命令行工具,用来编译Typescript代码,即tsc
命令。
编译器的安装,只需要安装Typescript即可,命令:npm install -g typescript
,安装结束后,就可以查看Typescript的版本等等信息。
编译程序
先创建一个Typescript文件,index.ts:
export function add(x: number, y:) {
return x + y;
}
编译文件:tsc index.ts
,然后生成index.js:
"use strict";
exports.__esModule = true;
exports.add = void 0;
function add(x,) {
return x + y;
}
exports.add = add;
–watch和-w
Typescript提供了一种特殊的编译模式,就是观察模式,编译器会监听文件的修改并且自动重新编译文件。
观察模式通过--watch
或者是-w
来启动,也就是在编译命令后添加–watch或者-w。如下图所示,就是启动观察模式后终端显示的结果:
启用--strict
编译选项是所有严格类型检查编译选项的总开关,包含了:
--strictNullChecks
--strictFunctionTypes
--strictBindCallApply
--strictPropertyInitialization
--noImplicitThis
--alwaysStrict
有很多的编译选项直接在tsconfig中设置即可,不用每次都需要输入对应的选项。
工程引用
在工程规模扩大之后,为了解决性能的问题,我们通常会把工程分为多个独立的子工程,最后再将所有子工程关联在一起。
在含有的tsconfig.json配置文件的目录作为工程的根目录,需要在tsconfig.json配置文件中做一些配置,比如:
- 使用"references"属性配置当前工程引用的其他工程。
- 被引用的工程必须启动composite编译选项。
references属性值是一个对象数组,用来设置引入的工程,比如:
"references": [{
"path": "../pack"
}]
composite编译选项的值是一个布尔值,composite选项的设置,编译器才能快速定位到依赖工程的输出文件位置,所以一个工程如果被其他工程引用,在该工程的composite编译选项必须设置为true。
比如现在有一个项目是由两个工程组成的:pack和pack1。
整体的项目目录如下:
工程pack1有一个模块是从工程pack中引入的,那就pack1工程依赖于pack中的模块:
在工程pack的tsconfig.json配置文件中设置:
{
"compilerOptions": {
"target": "ES2015",
"strict": true,
"composite": true,
},
}
主要是 "composite": true,
工程pack1的tsconfig.json配置文件中的配置:
{
"references": [{
"path": "../pack"
}]
}
build构建模式
build构建模式是配合工程引用的使用,编译器能够增量构建,命令:tsc --build
。
执行该命令后,编译器会执行一些操作:
- 查找当前工程所引用的子工程
- 检查当前工程和引用工程是否有更新
- 如果有更新,就会根据依赖顺序重新构建
这是编译后生成的文件:
其中在工程pack中生成的文件tsconfig.tsbuildinfo,它保存了该工程这次构建的详细信息,而编译器也是通过查看这个文件来决定是否重新编译。
build模式也有一些编译选项的:
- –verbose,打印构建的详细日志信息
- –dry,打印将执行的操作,但是不进行真正的构建
- –clean,删除工程中编译输出的文件
- –force,强制重新编译工程
- –watch,观察模式
solution模式
如果一个项目是由多个工程组成的,我们可以创建一个solution工程来管理这些子工程。
solution工程不包含任何实际代码,它只是引用项目中所有的工程并且将它们关联在一起。
项目的根目录的tsconfig.json中设置solution如下:
{
"files": [],
"include": [],
"references": [
{
"path": "pack"
},
{
"path": "pack1"
}
]
}
然后在根目录下执行命令:tsc --build --verbose
,这就可以同时编译pack和pack1了。
这就是Typescript的基本配置,当然配置也是随着版本的不同而不同,所以在进行配置的时候,要根据自己的版本来进行对应的配置。