tsconfig.json
檔案的設定選項繁多,下面是一些較常見的選項及其說明:
target: 指定 ECMAScript 目標版本。例如: ES3
, ES5
, ES2015
, ES2016
, ES2017
, 或 ESNext
。
module: 指定模塊程式碼生成的方式。如: CommonJS
, UMD
, ES6
, ES2015
, 或 ESNext
。
lib: 使用的函式庫列表,例如:["ES5", "DOM", "ES6", "ScriptHost"]
。
allowJs: 是否允許編譯 JavaScript 檔案。
checkJs: 報告 JavaScript 檔案中的錯誤。
jsx: 在 .tsx
檔案中支持 JSX,例如:"React"
。
declaration: 產生相應的 .d.ts
檔案。
sourceMap: 產生相應的 .map
檔案。
outFile: 輸出所有檔案的位置,小心使用。
outDir: 輸出目錄。
rootDir: 設定根目錄。
removeComments: 刪除註解,開發後應該蠻需要的。
noEmit: 不產生輸出檔案,如 JavaScript 檔案,這可以讓其他能夠轉換的工具派上用場。
importHelpers: 從 tslib
導入輔助工具函數。
downlevelIteration: 為 ES3/5 提供完整的迭代支持,但讓舊版本支援感覺不是好事情。
isolatedModules: 每個檔案作為獨立模塊。
strict: 啟用所有嚴格的類型檢查選項。
noImplicitAny: 在表達式和聲明上有隱式的 any
類型時報錯。
strictNullChecks: 嚴格的空值檢查。
strictFunctionTypes: 嚴格的函數類型檢查。
strictBindCallApply: 在 bind
、call
和 apply
上使用更嚴格的檢查。
strictPropertyInitialization: 嚴格的類別屬性初始化檢查。
noImplicitThis: 當 this
表達式值為 any
類型的時候報錯。
alwaysStrict: 以嚴格模式分析和執行。
skipLibCheck: 跳過宣告函式或函式庫的類型檢查。
forceConsistentCasingInFileNames: 不允許不同的大小寫對同一檔案進行操作。
noUnusedLocals: 報告未使用的局部變量。
noUnusedParameters: 報告未使用的參數。
noImplicitReturns: 檢查函數是否有返回值。
noFallthroughCasesInSwitch: 報告 switch 語句的 case 沒有 break。
moduleResolution: 模塊解析策略。如 node
和 classic
。
baseUrl: 用於解析非相對模組名稱的根目錄。
paths: 模塊名稱到基於 baseUrl 的路徑的對應。
esModuleInterop: 使用 ES 模塊導入 commonjs 模組。
allowSyntheticDefaultImports: 允許從沒有設置默認導出的模組導入。
preserveSymlinks: 保留符號連接的解析。
experimentalDecorators: 使用實驗性的裝飾器特性,建議可以等穩定後再使用實驗性質的。
emitDecoratorMetadata: 為裝飾器提供原數據的支持。
resolveJsonModule: 允許導入 JSON 模塊。
上述 tsconfig.json 配置中常見的一部分選項。可以在 TypeScript 官方文檔中查看所有的配置選項及其詳細說明:TypeScript tsconfig.json Documentation。
這邊只是簡單舉出幾個常見又好用的參數,可以看出 tsconfig.json 真的是很猛,基本上涵蓋很多常用的地方,來強化型別檢查了 嘻嘻。