# TS config
https://www.freesion.com/article/2489716074/
{
"compilerOptions": {
"allowUnreachableCode": true, // 不报告执行不到的代码错误。
"allowUnusedLabels": false, // 不报告未使用的标签错误
"alwaysStrict": false, // 以严格模式解析并为每个源文件生成 "use strict"语句
"experimentalDecorators": true, // 启用实验性的ES装饰器
"jsx": "react", // 在 .tsx文件里支持JSX
"sourceMap": true, // 是否生成map文件
"module": "commonjs", // 指定生成哪个模块系统代码
"noImplicitAny": false, // 是否默认禁用 any
"removeComments": true, // 是否移除注释
"types": [ //指定引入的类型声明文件,默认是自动引入所有声明文件,一旦指定该选项,则会禁用自动引入,改为只引入指定的类型声明文件,如果指定空数组[]则不引用任何文件
"node", // 引入 node 的类型声明 类型的名称
],
"typeRoots": [ // 与type一样
"../node" // 引入 node 的类型声明 类型的文件夹
],
"baseUrl": ".", // 工作根目录
"paths": { // 指定模块的路径,和baseUrl有关联,和webpack中resolve.alias配置一样
"src": [ //指定后可以在文件之直接 import * from 'src';
"./src"
],
// Vue3源码的配置
"@vue/*": ["packages/*/src"],
"vue": ["packages/vue/src"]
},
"target": "ESNext", // 编译的目标是什么版本的
"outDir": "./dist", // 输出目录
"declaration": true, // 是否自动创建类型声明文件
"declarationDir": "./lib", // 类型声明文件的输出目录
"allowJs": true, // 允许编译javascript文件。
"lib": [ // 编译过程中需要引入的库文件的列表
"es5",
"es2015",
"es2016",
"es2017",
"es2018",
"dom"
]
},
// 指定一个匹配列表(属于自动指定该路径下的所有ts相关文件)
"include": [
"src/**/*"
],
// 指定一个排除列表(include的反向操作)
"exclude": [
"demo.ts"
],
// 指定哪些文件使用该配置(属于手动一个个指定文件)
"files": [
"demo.ts"
]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# 文件相关配置
- files: 数组类型,用于表示由 ts 管理的文件的具体文件路径
- exclude: 数组类型,用于表示 ts 排除的文件(2.0 以上支持 Glob)
- include: 数组类型,用于表示 ts 管理的文件(2.0 以上)
- compileOnSave: 布尔类型,用于 IDE 保存时是否生成编译后的文件
- extends: 字符串类型,用于继承 ts 配置,2.1 版本后支持
- compilerOptions: 对象类型,设置编译的选项,不设置则使用默认配置,配置项比较多,后面再列
- typeAcquisition: 对象类型,设置自动引入库类型定义文件(.d.ts)相关,该对象下面有 3 个子属性分别是:
- enable: 布尔类型,是否开启自动引入库类型定义文件(.d.ts),默认为 false
- include: 数组类型,允许自动引入的库名,如:["jquery", "lodash"]
- exculde: 数组类型,排除的库名
如不设定 files 和 include,ts 默认是 exclude 以外的所有的以 .ts 和 .tsx 结尾的文件。如果,同时设置 files 的优先级最高,exclude 次之,include 最低。
# 编译相关配置
选项 | 类型 | 默认值 | 描述 |
---|---|---|---|
allowJs | boolean | false | 允许编译 js 文件 |
allowSyntheticDefaultImports | boolean | false | 允许对不包含默认导出的模块使用默认导入。这个选项不会影响生成的代码,只会影响类型检查。 |