tsconfig.json
文件中指定了用来编译这个项目的根文件和编译选项
自动编译项目
tsc
tsc可以直接自动监听所有的ts来编译为js文件
使用tsc的前提: 在项目根目录创建tsconfig.config.json文件
创建两种方式:
1. 直接在根目录新建tsconfig.config.json (配置文件需要自己配置)
2. 执行tsc --init (会自动创建相关配置)
tsc --init
tsconfig.config.json 配置项说明
1. include
定义希望被编译的ts文件所在目录
默认值: ["**/*"]
"include":["src/**/*"]
src目录下所有的ts文件都会被编译
2. exclude
不希望被编译的目录
默认值: ["node_modules", "bower_components", "jspm_packages"]
"exclude": ["./src/test/**/*"]
src中test目录下所有的ts文件不会被编译
3. extends
继承属性 希望继承的ts文件路径
"extends": "./src/base"
当前的配置文件会继承src目录下base的配置文件信息
4. files
指定要编译的ts文件
"files": [
"core.ts",
"sys.ts",
"types.ts",
"scanner.ts",
"parser.ts",
"utilities.ts",
"binder.ts",
"checker.ts",
"tsc.ts"
]
只会编译列出的ts文件
5. compilerOptions
复杂的配置项
5.1 target
设置编译后的js版本
默认值: ES3
可选: ES3(默认)、ES5、ES6/ES2015、ES7/ES2016、ES2017、ES2018、ES2019、ES2020、ESNext
"compilerOptions": {
"target": "ES6"
}
编译后为ES6语法
ts: let x:number = 10 >>> js: let x = 10
5.2 lib
所包含的库
可选值: ES5、ES6/ES2015、ES7/ES2016、ES2017、ES2018、ES2019、ES2020、ESNext、DOM、WebWorker、ScriptHost ......
"compilerOptions": {
"target": "ES6",
"lib": ["2015", "DOM"]
}
如果不含有DOM 使用document.xxx方法会在ts中报错
5.3 module
模块化系统
可选值: CommonJS、UMD、AMD、System、ES2020、ESNext
"compilerOptions": {
"module": "CommonJS"
}
5.4 outDir
编译后输出的js位置
默认情况会在ts同目录生成
"compilerOptions": {
"outDir": "js"
}
输出后的所有js文件存放在js目录下
5.5 outFile
将所有的ts编译成一个js文件
默认会将所有的编写在全局作用域中的代码合并为一个js文件,如果module制定了None、System或AMD则会将模块一起合并到文件之中 (参考)
"compilerOptions": {
"outFile": "dist/all.js"
}
将所有的ts文件编译并合并到dist目录下all.js中
5.6 rootDir (没理解 参考)
指定代码的根目录,默认情况下编译后文件的目录结构会以最长的公共目录为根目录,通过rootDir可以手动指定根目录
"compilerOptions": {
"rootDir": "./src"
}
5.7 allowJs
对js文件进行编译 js>>js (有点多此一举)
默认值: false
"compilerOptions": {
"allowJs": true,
}
5.8 checkJs
对js文件进行检查
默认值: false
开启后 let x = 10; x = 'hello' 报错(变成ts效果 一般搭配allowJs一起用)
"compilerOptions": {
"allowJs": true
"checkJs": true,
}
5.9 removeComments
是否删除编译后的js注释
默认值: false
"compilerOptions": {
"removeComments": true
}
开启后ts写的注释 js文件中没有
5.10 noEmit
不对ts文件进行编译 (感觉一点用没有)
默认值: false
"compilerOptions": {
"noEmit": true
}
5.11 严格检查
· alwaysStrict
用来设置编译后的文件是否使用严格模式
默认值: false
· noImplicitAny
不允许隐式any类型 开启后 let x; 会报错
· noImplicitThis
不允许不明确类型的this
· strictNullChecks
严格的检查空值
· strictBindCallApply
严格检查bind、call和apply的参数列表
· strictFunctionTypes
严格检查函数的类型
· strictPropertyInitialization
严格检查属性是否初始化
5.12 额外检查
· noFallthroughCasesInSwitch
检查switch语句包含正确的break
· noImplicitReturns
检查函数没有隐式的返回值
· noUnusedLocals
检查未使用的局部变量
· noUnusedParameters
检查未使用的参数
记录下来方便自己理解,当笔记用,
参考:
b站视频: 尚硅谷2021版TypeScript教程(李立超老师TS新课)(BV1Xy4y1v7S2)
github: typescript-learn 作者: JasonkayZK