1. include
定義被編譯文件所在的目錄。
默認(rèn)值: ["**/*"]
**
任意目錄
*
任意文件
2. exclude
不需要被編譯的文件目錄秘蛔。
默認(rèn)值:["node_modules", "bower_components", "jspm_packages"]
3. extends
定義被繼承的配置文件。
示例:
"extends": "./config.base.json"
4. files
指定被編譯的文件列表。一般只有需要編譯的文件少時才會用到隐岛。
示例:
"files": [
"index.ts",
"foo.ts"
]
5. compilerOptions
編譯選項(xiàng)。
1. target
指定 TS 被編譯為的 ES 版本瓷翻。
可選值:'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'
2. module
指定要使用的模塊化規(guī)范聚凹。
可選值:'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'
3. lib
用來指定項(xiàng)目中要使用的庫割坠。
可選值:'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', 'esnext.bigint', 'esnext.string', 'esnext.promise', 'esnext.weakref'
4. outDir
指定編譯后的文件所在目錄。
5. outFile
所有全局作用域中的代碼合并為一個文件妒牙。
如果 ts 中使用了模塊化韭脊,則配置文件中 module 需要設(shè)置為 system。
6. allowJs
是否對 js 文件進(jìn)行編譯单旁。默認(rèn) false沪羔。
7. checkJs
是否檢查 js 代碼符合語法規(guī)范。默認(rèn) false象浑。
8. removeComments
是否移除注釋蔫饰。默認(rèn) false
9. noEmit
不生成編譯后的文件。默認(rèn) false
10. noEmitOnError
有錯誤時不生成編譯文件愉豺。默認(rèn) true
11. alwaysStrict
編譯后的文件是否設(shè)置嚴(yán)格模式篓吁。默認(rèn) true
12. noImplicitAny
不允許隱式的 any。默認(rèn) true
// 隱式any
function fn(a, b) {
return a + b
}
13. noImplicitThis
不允許不明確類型的 this蚪拦。默認(rèn) true
比如以下函數(shù)中的 this杖剪。在非嚴(yán)格模式下普通函數(shù)調(diào)用,this 為 window驰贷。嚴(yán)格模式下為 undefined盛嘿。以上下文方式調(diào)用時,this 為其所指向的上下文括袒。
function func() {
console.log(this)
}
手動指定:
function fn(this: Window) {
console.log(this)
}
14. strictNullChecks
嚴(yán)格檢查空值次兆。默認(rèn) true
比如下面情況:box 可能獲取到的是 null。null 并沒有方法锹锰。所以可能會報(bào)錯芥炭。
const box = document.getElementById('box')
box.addEventListener('click', () => {
// do something...
})
解決方式:先判斷是否存在,使用 if 或通過可選鏈判斷恃慧。
if (box) {
// do something...
}
box?.addEventListener('click', () {
// do something...
})
15. strict
所有嚴(yán)格檢查的總開關(guān)园蝠。默認(rèn) true
strict 開啟后,所有 strict 相關(guān)的全部開啟痢士。