什么是 tsconfig.json?
tsconfig.json
是 TypeScript 編譯器的配置文件,用于指導編譯器如何編譯 TypeScript 代碼。在 TypeScript 項目中,如果存在這個文件,那么在執行 tsc
命令時,編譯器將會使用該文件中定義的配置選項進行編譯。
結構和基本配置選項
讓我們先來看一下一個簡單的 tsconfig.json
文件的結構及其基本配置選項:
{"compilerOptions": {"target": "es5","module": "commonjs","outDir": "./dist","strict": true,"baseUrl": "./src","paths": {"*": ["*", "src/*"]},"allowJs": true,"noImplicitAny": true,"sourceMap": true},"include": ["src/**/*"],"exclude": ["node_modules", "**/*.spec.ts"]
}
-
compilerOptions:這是一個對象,包含了編譯器的各種選項。
target
:指定編譯后的 JavaScript 代碼應該符合的 ECMAScript 標準版本。常見的值有"es5"
,"es6"
,"es2015"
,"es2016"
等。這決定了編譯器生成的 JavaScript 代碼的語法特性。module
:指定生成的模塊化代碼的模塊系統。常見的值有"commonjs"
,"amd"
,"es6"
,"umd"
等。它決定了編譯器如何將 TypeScript 的模塊轉換為 JavaScript 的模塊。outDir
:指定編譯后的 JavaScript 文件輸出目錄。編譯器會將編譯后的 JavaScript 文件輸出到指定的目錄中。strict
:啟用嚴格的類型檢查。當啟用時,編譯器會更嚴格地檢查類型,并發出更多的類型錯誤。baseUrl
:用于解析非相對模塊名稱的基本目錄。它指定了模塊名稱的基礎路徑,用于解析模塊的導入語句。paths
:指定模塊的路徑映射,用于模塊解析。可以為指定的模塊名稱提供自定義的解析路徑。allowJs
:允許編譯 JavaScript 文件。當啟用時,編譯器可以編譯項目中的 JavaScript 文件。noImplicitAny
:在表達式和聲明上有隱含的any
類型時報錯。當啟用時,編譯器會在遇到隱含的any
類型時發出警告或錯誤。sourceMap
:生成相應的.map
文件,方便調試。啟用后,編譯器會生成與編譯后的 JavaScript 文件相對應的源映射文件,以便在調試時可以將編譯后的 JavaScript 代碼映射回原始的 TypeScript 代碼。
-
include:一個字符串數組,指定需要編譯的文件或文件夾的路徑模式。編譯器會編譯匹配這些模式的文件。
-
exclude:一個字符串數組,指定不需要編譯的文件或文件夾的路徑模式。編譯器會排除匹配這些模式的文件。
更多常用選項
除了上述基本配置選項外,tsconfig.json
還支持許多其他常用的選項,如下所示:
- esModuleInterop:啟用
__importDefault
和__importStar
來支持 CommonJS 和 AMD 模塊之間的互操作性。 - declaration:生成相應的
.d.ts
聲明文件。當啟用時,編譯器會為每個 TypeScript 文件生成一個對應的聲明文件。 - strictNullChecks:啟用嚴格的 null 檢查。當啟用時,編譯器會檢查是否存在可能為
null
或undefined
的值,并發出相應的警告或錯誤。 - noUnusedLocals 和 noUnusedParameters:檢測并報告未使用的局部變量和參數。
- jsx:指定 JSX 語法的支持。常見的值有
"preserve"
,"react"
,"react-native"
等。 - allowSyntheticDefaultImports:啟用允許默認導入來自沒有默認導出的模塊的內容。
使用 extends 繼承配置
有時候,在多個 TypeScript 項目中可能存在相同的配置選項。為了避免重復,可以使用 extends
選項來繼承另一個配置文件的配置:
{"extends": "./common-tsconfig.json","compilerOptions": {"outDir": "./build"}
}
通過 extends
選項,可以將當前配置文件繼承自另一個配置文件,并在此基礎上進行修改或添加額外的配置選項。