版本1
{
"compilerOptions": {
"allowUnreachableCode": true, // 不報告執(zhí)行不到的代碼錯誤。
"allowUnusedLabels": false, // 不報告未使用的標簽錯誤
"alwaysStrict": false, // 以嚴格模式解析并為每個源文件生成 "use strict"語句
"baseUrl": ".", // 工作根目錄
"experimentalDecorators": true, // 啟用實驗性的ES裝飾器
"jsx": "react", // 在 .tsx文件里支持JSX
"sourceMap": true, // 是否生成map文件
"module": "commonjs", // 指定生成哪個模塊系統(tǒng)代碼
"noImplicitAny": false, // 是否默認禁用 any
"removeComments": true, // 是否移除注釋
"types": [ //指定引入的類型聲明文件闪湾,默認是自動引入所有聲明文件,一旦指定該選項动分,則會禁用自動引入,改為只引入指定的類型聲明文件掏导,如果指定空數(shù)組[]則不引用任何文件
"node", // 引入 node 的類型聲明
],
"paths": { // 指定模塊的路徑忘衍,和baseUrl有關(guān)聯(lián),和webpack中resolve.alias配置一樣
"src": [ //指定后可以在文件之直接 import * from 'src';
"./src"
],
},
"target": "ESNext", // 編譯的目標是什么版本的
"outDir": "./dist", // 輸出目錄
"declaration": true, // 是否自動創(chuàng)建類型聲明文件
"declarationDir": "./lib", // 類型聲明文件的輸出目錄
"allowJs": true, // 允許編譯javascript文件吧黄。
"lib": [ // 編譯過程中需要引入的庫文件的列表
"es5",
"es2015",
"es2016",
"es2017",
"es2018",
"dom"
]
},
// 指定一個匹配列表(屬于自動指定該路徑下的所有ts相關(guān)文件)
"include": [
"src/**/*"
],
// 指定一個排除列表(include的反向操作)
"exclude": [
"demo.ts"
],
// 指定哪些文件使用該配置(屬于手動一個個指定文件)
"files": [
"demo.ts"
]
}
版本2
{
"compilerOptions": {
/* Basic Options */
"target": "es5" /* target用于指定編譯之后的版本目標: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */,
"module": "commonjs" /* 用來指定要使用的模塊標準: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */,
"lib": ["es6", "dom"] /* lib用于指定要包含在編譯中的庫文件 */,
"allowJs": true, /* allowJs設(shè)置的值為true或false,用來指定是否允許編譯js文件唆姐,默認是false拗慨,即不編譯js文件 */
"checkJs": true, /* checkJs的值為true或false,用來指定是否檢查和報告js文件中的錯誤奉芦,默認是false */
"jsx": "preserve", /* 指定jsx代碼用于的開發(fā)環(huán)境: 'preserve', 'react-native', or 'react'. */
"declaration": true, /* declaration的值為true或false赵抢,用來指定是否在編譯的時候生成相應的".d.ts"聲明文件。如果設(shè)為true声功,編譯每個ts文件之后會生成一個js文件和一個聲明文件烦却。但是declaration和allowJs不能同時設(shè)為true */
"declarationMap": true, /* 值為true或false,指定是否為聲明文件.d.ts生成map文件 */
"sourceMap": true, /* sourceMap的值為true或false先巴,用來指定編譯時是否生成.map文件 */
"outFile": "./", /* outFile用于指定將輸出文件合并為一個文件其爵,它的值為一個文件路徑名冒冬。比如設(shè)置為"./dist/main.js",則輸出的文件為一個main.js文件摩渺。但是要注意窄驹,只有設(shè)置module的值為amd和system模塊時才支持這個配置 */
"outDir": "./", /* outDir用來指定輸出文件夾,值為一個文件夾路徑字符串证逻,輸出的文件都將放置在這個文件夾 */
"rootDir": "./", /* 用來指定編譯文件的根目錄,編譯器會在根目錄查找入口文件抗斤,如果編譯器發(fā)現(xiàn)以rootDir的值作為根目錄查找入口文件并不會把所有文件加載進去的話會報錯囚企,但是不會停止編譯 */
"composite": true, /* 是否編譯構(gòu)建引用項目 */
"incremental": true, /* 是否啟用增量編譯*/
"tsBuildInfoFile": "./", /* 指定文件用來存儲增量編譯信息 */
"removeComments": true, /* removeComments的值為true或false,用于指定是否將編譯后的文件中的注釋刪掉瑞眼,設(shè)為true的話即刪掉注釋龙宏,默認為false */
"noEmit": true, /* 不生成編譯文件,這個一般比較少用 */
"importHelpers": true, /* importHelpers的值為true或false伤疙,指定是否引入tslib里的輔助工具函數(shù)银酗,默認為false */
"downlevelIteration": true, /* 當target為'ES5' or 'ES3'時,為'for-of', spread, and destructuring'中的迭代器提供完全支持 */
"isolatedModules": true, /* isolatedModules的值為true或false徒像,指定是否將每個文件作為單獨的模塊黍特,默認為true,它不可以和declaration同時設(shè)定 */
/* Strict Type-Checking Options */
"strict": true /* strict的值為true或false锯蛀,用于指定是否啟動所有類型檢查灭衷,如果設(shè)為true則會同時開啟下面這幾個嚴格類型檢查,默認為false */,
"noImplicitAny": true, /* noImplicitAny的值為true或false旁涤,如果我們沒有為一些值設(shè)置明確的類型翔曲,編譯器會默認認為這個值為any,如果noImplicitAny的值為true的話劈愚。則沒有明確的類型會報錯瞳遍。默認值為false */
"strictNullChecks": true, /* strictNullChecks為true時,null和undefined值不能賦給非這兩種類型的值菌羽,別的類型也不能賦給他們掠械,除了any類型。還有個例外就是undefined可以賦值給void類型 */
"strictFunctionTypes": true, /* strictFunctionTypes的值為true或false算凿,用于指定是否使用函數(shù)參數(shù)雙向協(xié)變檢查 */
"strictBindCallApply": true, /* 設(shè)為true后會對bind份蝴、call和apply綁定的方法的參數(shù)的檢測是嚴格檢測的 */
"strictPropertyInitialization": true, /* 設(shè)為true后會檢查類的非undefined屬性是否已經(jīng)在構(gòu)造函數(shù)里初始化,如果要開啟這項氓轰,需要同時開啟strictNullChecks婚夫,默認為false */
"noImplicitThis": true, /* 當this表達式的值為any類型的時候,生成一個錯誤 */
"alwaysStrict": true, /* alwaysStrict的值為true或false署鸡,指定始終以嚴格模式檢查每個模塊案糙,并且在編譯之后的js文件中加入"use strict"字符串限嫌,用來告訴瀏覽器該js為嚴格模式 */
/* Additional Checks */
"noUnusedLocals": true, /* 用于檢查是否有定義了但是沒有使用的變量,對于這一點的檢測时捌,使用eslint可以在你書寫代碼的時候做提示怒医,你可以配合使用。它的默認值為false */
"noUnusedParameters": true, /* 用于檢查是否有在函數(shù)體中沒有使用的參數(shù)奢讨,這個也可以配合eslint來做檢查稚叹,默認為false */
"noImplicitReturns": true, /* 用于檢查函數(shù)是否有返回值,設(shè)為true后拿诸,如果函數(shù)沒有返回值則會提示扒袖,默認為false */
"noFallthroughCasesInSwitch": true, /* 用于檢查switch中是否有case沒有使用break跳出switch,默認為false */
/* Module Resolution Options */
"moduleResolution": "node", /* 用于選擇模塊解析策略亩码,有'node'和'classic'兩種類型' */
"baseUrl": "./", /* baseUrl用于設(shè)置解析非相對模塊名稱的基本目錄季率,相對模塊不會受baseUrl的影響 */
"paths": {}, /* 用于設(shè)置模塊名稱到基于baseUrl的路徑映射 */
"rootDirs": [], /* rootDirs可以指定一個路徑列表,在構(gòu)建時編譯器會將這個路徑列表中的路徑的內(nèi)容都放到一個文件夾中 */
"typeRoots": [], /* typeRoots用來指定聲明文件或文件夾的路徑列表描沟,如果指定了此項飒泻,則只有在這里列出的聲明文件才會被加載 */
"types": [], /* types用來指定需要包含的模塊,只有在這里列出的模塊的聲明文件才會被加載進來 */
"allowSyntheticDefaultImports": true, /* 用來指定允許從沒有默認導出的模塊中默認導入 */
"esModuleInterop": true /* 通過為導入內(nèi)容創(chuàng)建命名空間吏廉,實現(xiàn)CommonJS和ES模塊之間的互操作性 */,
"preserveSymlinks": true, /* 不把符號鏈接解析為其真實路徑泞遗,具體可以了解下webpack和nodejs的symlink相關(guān)知識 */
/* Source Map Options */
"sourceRoot": "", /* sourceRoot用于指定調(diào)試器應該找到TypeScript文件而不是源文件位置,這個值會被寫進.map文件里 */
"mapRoot": "", /* mapRoot用于指定調(diào)試器找到映射文件而非生成文件的位置迟蜜,指定map文件的根路徑刹孔,該選項會影響.map文件中的sources屬性 */
"inlineSourceMap": true, /* 指定是否將map文件的內(nèi)容和js文件編譯在同一個js文件中,如果設(shè)為true娜睛,則map的內(nèi)容會以//# sourceMappingURL=然后拼接base64字符串的形式插入在js文件底部 */
"inlineSources": true, /* 用于指定是否進一步將.ts文件的內(nèi)容也包含到輸入文件中 */
/* Experimental Options */
"experimentalDecorators": true /* 用于指定是否啟用實驗性的裝飾器特性 */
"emitDecoratorMetadata": true, /* 用于指定是否為裝飾器提供元數(shù)據(jù)支持髓霞,關(guān)于元數(shù)據(jù),也是ES6的新標準畦戒,可以通過Reflect提供的靜態(tài)方法獲取元數(shù)據(jù)方库,如果需要使用Reflect的一些方法,需要引入ES2015.Reflect這個庫 */
}
"files": [], // files可以配置一個數(shù)組列表障斋,里面包含指定文件的相對或絕對路徑纵潦,編譯器在編譯的時候只會編譯包含在files中列出的文件,如果不指定垃环,則取決于有沒有設(shè)置include選項邀层,如果沒有include選項,則默認會編譯根目錄以及所有子目錄中的文件遂庄。這里列出的路徑必須是指定文件寥院,而不是某個文件夾,而且不能使用* ? **/ 等通配符
"include": [], // include也可以指定要編譯的路徑列表涛目,但是和files的區(qū)別在于秸谢,這里的路徑可以是文件夾凛澎,也可以是文件,可以使用相對和絕對路徑估蹄,而且可以使用通配符塑煎,比如"./src"即表示要編譯src文件夾下的所有文件以及子文件夾的文件
"exclude": [], // exclude表示要排除的、不編譯的文件臭蚁,它也可以指定一個列表最铁,規(guī)則和include一樣,可以是文件或文件夾垮兑,可以是相對路徑或絕對路徑炭晒,可以使用通配符
"extends": "", // extends可以通過指定一個其他的tsconfig.json文件路徑,來繼承這個配置文件里的配置甥角,繼承來的文件的配置會覆蓋當前文件定義的配置。TS在3.2版本開始识樱,支持繼承一個來自Node.js包的tsconfig.json配置文件
"compileOnSave": true, // compileOnSave的值是true或false嗤无,如果設(shè)為true,在我們編輯了項目中的文件保存的時候怜庸,編輯器會根據(jù)tsconfig.json中的配置重新生成文件当犯,不過這個要編輯器支持
"references": [], // 一個對象數(shù)組,指定要引用的項目
}