TypeScript学习笔记——编译选项
1. 自动编译
1. 自动编译文件
- 编译文件时,添加-w指令(watch),TS编译器会自动监视文件的变化,并在发生变化时对文件进行重新编译
- 示例:
tsc xxx.ts -w
2. 自动编译整个项目
- 直接使用tsc指令,则可以对当前项目下的所有ts文件都进行编译
- 使用tsc的前提是,在项目根目录下创建一个ts的配置文件tsconfig.json
2. 配置选项
1. include
- 定义待编译文件所在的目录
- 默认值:["**/*"]
- 示例:
//该配置后,src目录和tests目录下的所有ts文件都会被编译
"include": [" src/**/* ", " tests/**/* "]
**:表示全部目录
*:表示全部文件
2. exclude
- 定义需要被编译器排除在外的目录(不希望被编译的目录)
- 默认值:[“node_modules”, “bower_components”, “jspm_packages”]
- 示例:
//该配置后,src下hello目录下的文件都不会被编译
"exclude": [" ./src/hello/**/* "]
3. extends*
- 定义被继承的配置文件
- 示例:
//该配置后,当前配置文件中会自动包含config目录下的base.json中的所有配置信息
"extends": " ./configs/base "
4. files*
- 指定被编译文件的列表,只有需要编译的文件较少时才会用到
- 示例:
//该配置后,file1.ts、file2.ts会被编译
"files": [“file1.ts”, "file2.ts"]
5. compilerOptions(重要)
- 编译选项是配置文件中非常重要也比较复杂的配置选项
- 包含了多个子选项,用来完成对编译的配置
1. target
- 设置ts代码编译的目标版本
- 可选值:“ES3”(默认)、“ES5”、“ES6”、“ES2015”、“ES2016”、“ES2017”、“ES2018”、“ES2019”、“ES2020”、“ES2021”、“ESNext”
- 实例:设置为ES6版本
"compilerOptions": {
"target": "ES6"
}
2. lib
- 指定代码运行时所包含的库(宿主环境)
- 可选值:“ES5”、“ES6”、“ES2015”、“ES2015.Collection”、“ES2015.Core”、“ES2015.Generator”、“ES2015.Iterable”…
- 实例:
"compilerOptions": {
"lib": ["ES5","DOM"]
}
3. module
- 指定要使用的模块化规范
- 可选值:“CommonJS”、“AMD”、“System”、“UMD”、“ES6”、“ES2015”、“ES2020”、“ESNext”、“None”、“es2022”、“node12”、“nodenext”
- 实例:指定使用ES6的模块化规范
"compilerOptions": {
"module": ["ES6"]
}
4. outDir
- 指定编译后文件所在的目录
- 实例:指定编译至dist目录
"compilerOptions": {
"outDir": "./dist"
}
5. outFile
- 将所有编译文件合并至一个文件
- 实例:合并至dist目录下的app.js
"compilerOptions": {
"outFile": "./dist/app.js"
}
- 设置outFile后,所有的全局作用域中的代码会合并到指定的文件
- 注意,如果同时使用模块化,只有amd和system规范支持合并到同一文件
6. allowJs
- 指定是否对js文件进行编译,默认是false
- 实例:
"compilerOptions": {
"allowJs": true
}
7. checkJs
- 指定是否检查js文件的语法规范,默认是false
- 实例:
"compilerOptions": {
"checkJs": true
}
8. removeComments
- 指定编译ts文件时是否移除注释,默认是false
- 实例:
"compilerOptions": {
"removeComments": true
}
9. noEmit*
- 指定是否需要生成编译后的文件,默认是false
10. noEmitOnError
- 当有错误时,不生成编译后的文件,默认是false
- 实例:
"compilerOptions": {
"noEmitOnError": true
}
11. Strict
- 所有严格检查的总开关
12. alwaysStrict
- 用来设置编译后的文件是否使用严格模式,默认是false
13. noImplicitAny
- 设置是否允许隐式的any类型,默认是false
14. noImplicitThis
- 设置是否不明确的this使用,默认是false
15. strictNullChecks
- 设置是否严格的检查空值