TypeScript配置文件說明


在使用VsCode編寫TypeScript時,VsCode提供了一個tsconfig.json輔助我們設置TypeScript的配置項來確定如何生成最終的js文件。

那tsconfig.json到底有哪些常用屬性,它們又起到什么作用呢?

1、tsconfig.json
1.1、compilerOptions
tsconfig.json文件中的 compilerOptions 屬性用於確定如何編譯ts文件。

其中大概有如下屬性:

1.1.1、module: enum

module 用於指定模塊的代碼生成規則,可以使用 commonjs 、 amd 、 umd 、 system 、 es6 、 es2015 、 none 這些選項。

選擇commonJS,會生成符合commonjs規范的文件,使用amd,會生成滿足amd規范的文件,使用system會生成使用ES6的system.import的代碼。使用es6或者是es2015會生產包含ES6特性的代碼。

1.1.2、target: enum

target 用於指定生成代碼的兼容版本,可以從es3,es5,es2015,es6中選擇一個,如果不設置,默認生產的代碼兼容到es3。

1.1.3、sourceMap: boolean

sourceMap 是是否生成SourceMap的開關,如果設置為true,則會生成.map文件。

1.1.4、 noImplicitAny: boolean

noImplicitAny 當表達式和申明 類型為any時,是否需要發出警告,設置true,則不警告

1.1.5、 removeComments: boolean

用於指定是否需要輸出注釋,設置為true,則不輸出注釋。

1.1.6、 charset: string

用於指定ts文件的編碼格式

1.1.7、 declaration: boolean

是否需要生成定義文件d.ts,設置為true,則生成。

1.1.8、 diagnostics: boolean

是否需要顯示診斷信息,設置為true,則顯示。

1.1.9、 emitBOM: boolean

是否需要在輸出文件的開頭發出一個UTF-8字節順序標記,設置為true,則輸出。

1.1.10、inlineSourceMap: boolean

是否需要將sourceMap文件生成到js文件中,設置為true,則生成到js文件中。

注:此選項和sourceMap、mapRoot選項沖突,會優先使用inlineSouceMap

1.1.11、inlineSources: boolean

用於指定生成的source內容是否inline,如果設置為true,則inline展示(從測試的效果來看,就是生成在js文件中的source map內容要多一些)

注:該設置項依賴inlineSouceMap設置為true

1.1.12、jsx: enum

用於指定按照何種方式生成jsx代碼,可選react和preserve。

1.1.13、reactNamespace: string

配置jsx屬性使用,指定生成react代碼時,需要使用的命名空間。默認""

1.1.14、listFiles: boolean

編譯時是否需要打印文件列表,設置為true,則打印。默認false

1.1.15、locale: string

用於指定本地化錯誤信息,如果設定為en-us,那么錯誤信息將顯示英文。默認""

1.1.16、mapRoot: string(uri)

指定map文件的跟路徑,該選項的值影響.map文件中的sources屬性。默認""

注:該選項依賴sourceMap: true

1.1.17、newLine: enum

指定換行符。可選 CRLF 和 LF 兩種,前者是回車換行,后者是換行。默認是回車換行

1.1.18、noEmit: boolean

當設置為true時,將不會輸出

1.1.19、noEmitHelpers: boolean

設置為true時,不會生成自定義的helper函數。

1.1.20、noEmitOnError: boolean

設置為true時,如果遇到了錯誤,就不再輸出

1.1.21、noLib: boolean

設置為true時,將不會包含默認的庫,如(lib.d.ts),此時有可能導致找不到Array,String等對象

1.1.22、noResolve: boolean

設置為true時,不使用三斜杠引入模塊,需要從編譯的文件列表中添加。

///
import PI from './2A.ts';
1.1.23、skipDefaultLibCheck: boolean

設置為true時,將跳過默認庫檢查。

1.1.24、outFile: string(uri)

設置輸出文件,會將多個ts輸入文件合並到該文件中

1.1.25、outDir: string(uri)

指定輸出文件的根目錄。

1.1.26、preserveConstEnums: boolean

設置為true時,生成代碼時不會刪除常量枚舉聲明。

1.1.27、pretty: boolean

當設置為true時,錯誤信息,跟蹤信息將帶有顏色和樣式

1.1.28、noImplicitUseStrict: boolean

當設置為true時,編譯輸出時不會調用'use strict'指令(也就是不生成use strict)

1.1.29、rootDir: string(uri)

指定輸入文件的根目錄。rootDir應包含所有的源文件。

1.1.30、isolatedModules: boolean

設置為true時,無條件的觸發導入未解決的文件。

1.1.31、sourceRoot: string(uri)

設置在調試時定位的目標文件根目錄

1.1.32、suppressExcessPropertyErrors: boolean

設置為true時,禁止過剩的對象字面量屬性檢查

1.1.33、suppressImplicitAnyIndexErrors: boolean

Suppress noImplicitAny errors for indexing objects lacking index signatures.

1.1.34、stripInternal: boolean

設置為true,則遇到@internal注解時,不會觸發代碼定義。

1.1.35、watch: boolean

設置為true時,將監視文件變化。當文件變化時,自動編譯

1.1.36、experimentalDecorators: boolean

設置為true,則支持ES7的裝飾器特性

1.1.37、emitDecoratorMetadata: boolean

設置為true,則使用元數據特性

1.1.38、moduleResolution: string

指定模塊的解析策略,Node或者是classic,默認是classic。

1.1.39、allowUnusedLabels: boolean

設置為true時,允許沒有用到的標簽。

l: do{
console.log('abc');
}while (1 !== 1);
以上代碼有個未使用的標簽l,默認是會報錯的。

1.1.40、noImplicitReturns: boolean

設置為true時,如果不是函數中的所有路徑都有返回值,則提示Error。

var a = 2;
function fun(){
if(a === 1){
return 'abc';
}
//fun函數只有當a = 1的時候,才有確定的返回值。
}
1.1.41、noFallthroughCasesInSwitch: boolean

設置為true時,將嚴格校驗switch-case語法。

function fun2(){
let key = 'ab';
switch (key) {
case 'ab':
console.log('abc');
}
}
以上代碼默認情況不會報錯,當設置noFallthroughCasesInSwitch: true時,則會提示錯誤。

1.1.42、allowUnreachableCode: boolean

設置為true時,如果有無法訪問的代碼,也不會報錯。

function fun(){
return 'abc';
return 'ccc'; //默認會報錯,設置allowUnreachableCode為true時,則不報錯
}
1.1.43、forceConsistentCasingInFileNames: boolean

設置為true時,將強制區分大小寫。默認為false。

//2a.ts
export const PI = 3.1415926;
//1a.ts
import PI from './2A.ts';
function fun(){
return PI;
}
以上代碼默認可以通過,當強制區分大小寫時,則提示錯誤 '2a' !== '2A'

1.1.44、allowSyntheticDefaultImports: boolean

設置為true時,則允許從沒有默認導出的模塊中默認導入(也就是不做檢查)。

//2.ts
export const PI = 3.1415926;
//1.ts
import PI from './2.ts';
function fun(){
return PI;
}
以上代碼,默認是會報錯的,當設置allowSyntheticDefaultImports時,則不會報錯。

1.1.45、allowJs: boolean

當設置為true時,js文件也會被編譯。

注意:編譯js文件時,如果不另外設置outFile,將不會成功,因為不能夠重寫源代碼文件

1.2、compileOnSave
該屬性用於啟用保存時編譯功能。

**注意:當前僅僅只有VS2015配置TypeScript1.8.4以后或者在atom中搭配atom-typescript插件才有效

1.3、exclude
exclude用於排除不需要編譯的ts文件。該屬性和files屬性沖突。兩者只能設置其一。

1.4、files
當files屬性不存在時,編譯器會編譯當前目錄和子目錄中的所有文件。當files屬性存在是,僅僅是編譯files列表中的文件。

該屬性和exclude屬性沖突。如果同時指定了exclude和files,則files屬性優先。

2、常用tsconfig配置
{
"compilerOptions": {
"target": "ES5",
"module": "commonjs",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"sourceMap": true,
"noEmitHelpers": true
},
"exclude": [
"node_modules",
"typings/main",
"typings/main.d.ts"
],
"compileOnSave": false
}

注意:本文摘錄於github


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM