创建配置文件 tsconfig.json
tsc --init
直接执行 tsc 命令,默认编译目录下所有的 ts 文件
1、include
需要被编译的 ts 文件
"include": [
"./src/**/*"
]
路径:**
表示任意目录,*
表示任意文件
2、exclude
不需要被编译的 ts 文件
默认值:[“node_modules”, “bower_components”, “jspm_packages”]
"exclude": [
"./src/**/*"
]
3、extends
定义被继承的配置文件
"extends": [
"./config/base"
]
表示当前配置文件中会自动包含 config 目录下 base.json 中所有的配置信息
4、files
指定被编译文件的列表,只有需要编译的文件少时才会用到
"files": [
"core.ts",
"sys.ts",
"types.ts",
"parser.ts"
]
以上列表中的文件都会被TS编译器所编译
5、compilerOptions
编译器的选项,里面包含多个子选项,用来完成对编译的配置
"compilerOptions": {
}
(1)target
指定TS被编译为ES的版本
可选值:es3(默认),es5,es6,es2015,es2016,es2017,es2018,es2019,es2020,es2021,es2022,esnext(最新版本)
"target": "es2016"
(2)module
指定要使用模块化的规范
可选值:commonjs,amd,system,umd,es6,es2015,es2020,esnext,none,es2022,node16,nodenext,preserve
"module": "commonjs"
(3)lib
指定项目中要使用的库。当代码在浏览器环境中运行的时候默认不用设置这个配置;当运行在nodejs中可以去改
可选值:
es5, es6, es2015,es7,es2016,es2017,es2018,es2019,es2020,es2021,es2022,esnext,dom,dom.iterable,webworker, webworker.importscripts, webworker.iterable,scripthost,es2015.core,es2015.collection,es2015.generator,es2015.iterable,es2015.promise,es2015.proxy,es2015.reflect,es2015.symbol,es2015.symbol.wellknown,es2016.array.include,es2017.object,es2017.sharedmemory,es2017.string,es2017.intl,es2017.typedarrays,es2018.asyncgenerator,es2018.asynciterable,es2018.intl,es2018.promise,es2018.regexp,es2019.array,es2019.object,es2019.string,es2019.symbol,es2020.bigint,es2020.date,es2020.promise,es2020.sharedmemory,es2020.string,es2020.symbol.wellknown,es2020.intl,es2020.number,es2021.promise,es2021.string,es2021.weakref,es2021.intl,es2022.array,es2022.error,es2022.intl,es2022.object,es2022.string,esnext.array,esnext.symbol,esnext.asynciterable,esnext.intl,esnext.bigint,esnext.string,esnext.promise,esnext.weakref.
"lib": ["es6", "dom"]
(4)outDir
用来指定编译后文件所在的目录
"outDir": "./dist"
(5)outFile
将编译后的代码合并为一个文件,注意:是所有全局作用域中的代码
"outFile": "./dist/app.js"
(6)allowJs
是否对 js文件进行编译,默认是 false
"allowJs": false
(7)checkJs
是否检查 js文件是否符合语法规范,默认是 false
"checkJs": false
(8)removeComments
编译后是否移除注释,默认是 false
"removeComments": false
(9)noEmit
是否生成编译后的文件,默认是 true
"noEmit": true
(10)noEmitOnError
当有错误的时候不生成编译后的文件,默认是 false
"noEmitOnError": false
(11)alwaysStrict
设置编译后的文件是否使用严格模式,默认是 false
"alwaysStrict": false
(12)noImplicitAny
不允许隐式的 any 类型,默认是 false
"noImplicitAny": false
如下,如果设置为 true 就会报错
function (a, b) {
return a + b;
}
可改为:
function (a: number, b: number) {
return a + b;
}
(13)noImplicitThis
不允许不明确类型的 this,默认是 false
"noImplicitThis": false
如下,如果设置为 true 就会报错,this 的类型是不明确的
function fn() {
alert(this);
}
可改为:
function fn(this: Window) {
alert(this);
}
(14)strictNullChecks
严格的检查空值,默认是 false
"strictNullChecks": false
如下:在网页中获取到的元素不一定存在,有可能为 Null,为 Null 时使用 addEventListener 方法就会报错。如果 strictNullChecks 设置为 true 就会报错
let box = document.getElementById('box')
box.addEventListener(click, function() {
alert('box')
})
可改为:
let box = document.getElementById('box')
box?.addEventListener(click, function() {
alert('box')
})
(15)strict
所有严格检查的总开关
"strict": true