TSConfig 配置文件

93 阅读4分钟

TS的编译器

TS编译器

TS编译器的作用:将TS代码编译成JS代码。同时我们可以在任何编辑中编写和检查TS代码。

# 安装TS编译器
npm install -g typescript

# 使用编译器初始化一个TS项目,初始化完成后会生成一个配置文件tsconfig.json
tsc --init

# 使用编译器对某个文件进行编译
tsc xxx.ts

tsconfig.json文件

当项目根目录存在tsconfig.json文件时,直接使用tsc指令,则可以自动将当前项目下的所有ts文件编译为js文件。

配置选项

inlcude

定义希望被编译文件所在的目录

"include":["src/**/*", "tests/**/*"]

exclude

定义需要排除在外的目录

"exclude": ["./src/hello/**/*"]

extends

定义被继承的配置文件

// 当前配置文件中会自动包含config目录下base.json中的所有配置信息
"extends": "./configs/base"

files

指定被编译文件的列表,只有需要编译的文件少时才会用到

compilerOptions

编译选项是配置文件中非常重要也比较复杂的配置选项。在compilerOptions中包含多个子选项,用来完成对编译的配置

target

设置ts代码编译的目标版本。

"compilerOptions": {
	// 我们所编写的ts代码将会被编译为ES6版本的js代码
    "target": "ES6"
}

lib

指定代码运行时所包含的库(宿主环境) 可选值:ES5、ES6/ES2015、ES7/ES2016、ES2017、ES2018、ES2019、ES2020、ESNext、DOM、WebWorker、ScriptHost …

"compilerOptions": {
    "target": "ES6",
    "lib": ["ES6", "DOM"],
    "outDir": "dist",
    "outFile": "dist/aa.js"
}

module

设置编译后代码使用的模块化系统 可选值:CommonJS、UMD、AMD、System、ES2020、ESNext、None

outDir

编译后文件的所在目录,默认情况下,编译后的js文件会和ts文件位于相同的目录,设置outDir后可以改变编译后文件的位置。

outFile

将所有的文件编译为一个js文件。默认会将所有的编写在全局作用域中的代码合并为一个js文件,如果module制定了None、System或AMD则会将模块一起合并到文件之中。

"compilerOptions": {
    "outFile": "dist/app.js"
}

rootDir

指定代码的根目录,默认情况下编译后文件的目录结构会以最长的公共目录为根目录,通过rootDir可以手动指定根目录

"compilerOptions": {
    "rootDir": "./src"
}

allowJs

是否对js文件编译

checkJs

是否对js文件进行检查

removeComments

是否删除注释 默认值:false

noEmit

不对代码进行编译 默认值:false

sourceMap

TypeScript-sourceMap

是否生成sourceMap。

These files allow debuggers and other tools to display the original TypeScript source code when actually working with the emitted JavaScript files. Source map files are emitted as .js.map (or .jsx.map) files next to the corresponding .js output file.

The .js files will in turn contain a sourcemap comment to indicate where the files are to external tools.

默认值:false

严格检查

  1. strict 启用所有的严格检查,默认值为true,设置后相当于开启了所有的严格检查
  2. alwaysStrict 总是以严格模式对代码进行编译
  3. noImplicitAny 禁止隐式的any类型
  4. noImplicitThis 禁止类型不明确的this
  5. strictBindCallApply 严格检查bind、call和apply的参数列表
  6. strictFunctionTypes 严格检查函数的类型
  7. strictNullChecks 严格的空值检查
  8. strictPropertyInitialization 严格检查属性是否初始化

额外检查

  1. noFallthroughCasesInSwitch 检查switch语句包含正确的break
  2. noImplicitReturns 检查函数没有隐式的返回值
  3. noUnusedLocals 检查未使用的局部变量
  4. noUnusedParameters 检查未使用的参数

高级

  1. allowUnreachableCode 检查不可达代码 可选值: true,忽略不可达代码 false,不可达代码将引起错误
  2. noEmitOnError 有错误的情况下不进行编译 默认值:false

moduleResolution

模块解析策略,是指编译器在查找导入模块内容时所遵循的流程,也就是编译器通过何种策略定位你导入的模块.

模块解析

tsconfig之moduleResolution详解 moduleResolution 总结

模块解析策略 共有两种可用的模块解析策略:Node 和 Classic。 可以使用 --moduleResolution 标记来指定使用哪种模块解析策略。 若未指定,那么在使用了 --module AMD | System | ES2015 时的默认值为 Classic,其它情况时则为 Node。

module