1.自动编译的两种方法
tsc ts文件 -w
能够对单个ts文件进行监视,若有修改则会自动重新编译。- 新建一个tsconfig.json文件,然后在命令行执行
tsc -w
可以对所有ts文件进行监视,若有修改则会自动重新编译。
2.tsconfig.json文件
tsconfig.json 是ts编译器的配置文件,ts编译器可以根据它的信息来对代码进行编译
-
include
- 用来表示需要被编译的ts文件目录
- 路径: **表示任意目录, *表示任意文件
"include": [ "./src/**/*" ]
-
exclude
- 用来表示不需要被编译的文件目录
- 默认值:[“node_modules”, “bower_components”, “jspm_packages”]
"exclude": [ "./src/hello/**/*" ]
-
extends
- 定义被继承的配置文件
//表示当前配置文件中会自动包含config目录下base.json中的所有配置信息 "extends": "./configs/base"
-
files
- 指定被编译文件的列表,只有需要编译的文件少时才会用到
"files": [ "core.ts", "sys.ts", "types.ts" ]
-
compilerOptions(重要,编译器的选项)
compilerOptions有很多的子选项
"compilerOptions": { //target 用来指定ts被编译为ES的版本 //'es3', 'es5', 'es6', 'es2015', 'es2016', 'es2017', 'es2018', 'es2019', 'es2020', 'esnext'. "target": "es2015", //module 指定要使用的模块化的规范 //'none', 'commonjs', 'amd', 'system', 'umd', 'es6', 'es2015', 'es2020', 'esnext' "module": "es2015", //lib 用来指定项目所用的库 // "lib": [],//一般情况下不需要设置(浏览器运行的就不用管,nodejs运行的再根据实际使用去指定) // 可选值:'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'es2018', 'es2019', 'es2020', '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.promise', // 'es2020.sharedmemory', 'es2020.string', 'es2020.symbol.wellknown', 'es2020.intl', 'esnext.array', 'esnext.symbol', 'esnext.asynciterable', 'esnext.intl', //outDir 用来指定编译后文件所在的目录 "outDir": "./dist", //outFile 将代码合并为一个文件 // 设置outFile后,所有的全局作用域中的代码会合并到同一个文件中 // "outFile": "./dist/app.js", // 是否对js文件进行编译,默认是false "allowJs": true, // 是否检查js代码是否符合语法规范,默认值是false "checkJs": true, // 是否移除注释 "removeComments": true, // 不生成编译后的文件 "noEmit": false, // 当有错误时不生成编译文件 "noEmitOnError": true, // 所有严格检查的总开关,包括下面四个(如果相同的话可以直接用这个,下面四个省略) "strict": true, // 用来设置编译后的文件是否使用严格模式,默认是false "alwaysStrict": true, // 不允许隐式的any类型 "noImplicitAny": true, // 不允许不明确类型的this "noImplicitThis": true, // 严格检查空值 "strictNullChecks": true }