跳至主要內容

共享設定檔

ESLint 共享設定檔 會提供您可以著手開始使用的完整規則設定清單。@typescript-eslint/eslint-plugin 納入您可延伸的內建設定檔,以納入建議的入門規則。

除了 allstrictstrict-type-checked 之外,所有設定檔都視為「穩定」。規則的新增與移除被當作破壞性變更,其只會在主要版本升級時才會執行。

開始使用

請先參閱 Getting Started > Quickstart,設定 ESLint 組態檔案。Packages > typescript-eslint 包含更多關於 tseslint 協助工具的文件。

未開啟類型檢查的專案

如果專案未啟用 類型化檢查,我們建議啟用 recommendedstylistic 組態作為開始。

eslint.config.js
export default tseslint.config(
eslint.configs.recommended,
...tseslint.configs.recommended,
...tseslint.configs.stylistic,
);

如果貴專案的大部分開發人員熟悉 TypeScript 和 typescript-eslint,請考慮將 recommended 改為 strict

已開啟類型檢查的專案

如果專案已啟用 類型化檢查,我們建議啟用 recommended-type-checkedstylistic-type-checked 組態作為開始。

eslint.config.js
export default tseslint.config(
eslint.configs.recommended,
...tseslint.configs.recommendedTypeChecked,
...tseslint.configs.stylisticTypeChecked,
);

如果貴專案的大部分開發人員熟悉 TypeScript 和 typescript-eslint,請考慮將 recommended-type-checked 改為 strict-type-checked

我們建議大多數專案應從以下其中一個組態延伸開來:

  • recommended:程式碼正確性的建議規則,您可在不需額外設定的情況下直接套用。
  • recommended-type-checked:包含 recommended 與其他需要類型資訊的建議規則。
  • strict:包含 recommended 與其他嚴格規則,這些規則也能找出錯誤,但比建議規則更偏向特定觀點。
  • strict-type-checked:包含 strict 與其他嚴格規則,也需要類型資訊。

此外,我們提供一個 stylistic 組態,可強制執行簡潔一致的程式碼。我們建議大多數專案應從下列其中一個組態延伸開來:

  • stylistic:語法規則,您可在不需額外設定的情況下直接套用。
  • stylistic-type-checked:包含 stylistic 與其他需要類型資訊的語法規則。
注意

這些設定檔為我們的建議起點,但您並不需要使用它們原樣。ESLint 允許根據擴充設定檔設定自己的規則設定。參閱 ESLint 設定規則文件

建議的程式碼正確性規則,您可以直接使用,無需額外設定。這些規則的報告幾乎總是針對錯誤的做法和/或可能的錯字。recommended 也會停用已知的核心 ESLint 規則,這些規則會與 typescript-eslint 規則產生衝突或在 TypeScript 程式碼庫中造成問題。

eslint.config.js
export default tseslint.config(...tseslint.configs.recommended);

參閱 configs/recommended.ts 以取得此設定檔的確切內容。

包含所有 recommended 以及需要類型資訊的其他建議規則。此設定檔中新增加的規則與 recommended 中的規則一樣實用。

eslint.config.js
export default tseslint.config(...tseslint.configs.recommendedTypeChecked);

參閱 configs/recommended-type-checked.ts 以取得此設定檔的確切內容。

strict

包含所有 recommended,以及其他嚴格的規則,這些規則也可以偵測到錯誤。strict 中增加的規則比建議的規則更主觀,且可能不適用於所有專案。

eslint.config.js
export default tseslint.config(...tseslint.configs.strict);

某些規則也在 recommended 中啟用,在此設定檔中預設為更嚴格的設定。參閱 configs/strict.ts 以取得此設定檔的確切內容。

提示

我們建議 TypeScript 專案僅在一定比例的開發人員非常精通 TypeScript 時,才從 plugin:@typescript-eslint/strict 延伸。

警告

在語意化版本處理 (semver) 下,此設定不被認為是「穩定的」。它的啟用規則和/或其選項可能會在主要版本更新之外變更。

strict-type-checked

包含所有 recommendedrecommended-type-checkedstrict,以及需要類型資訊的其他嚴格規則。此設定中新增加的規則,類似於 strict 中的規則,同樣具有實用性且意見偏好。

eslint.config.js
export default tseslint.config(...tseslint.configs.strictTypeChecked);

一些也在 recommended-type-checked 啟用的規則,預設會在這個設定中以更嚴格的設定為準。請參閱 configs/strict-type-checked.ts,以取得此設定的確切內容。

提示

我們建議 TypeScript 專案僅在一定比例的開發人員非常精通 TypeScript 時,才從 plugin:@typescript-eslint/strict-type-checked 延伸。

警告

在語意化版本處理 (semver) 下,此設定不被認為是「穩定的」。它的啟用規則和/或其選項可能會在主要版本更新之外變更。

stylistic

對於現代 TypeScript 程式碼庫來說,被視為最佳實務的規則,但不會影響程式邏輯。這些規則基本上都會意見偏好地強制執行較簡單的程式碼模式。

eslint.config.js
export default tseslint.config(...tseslint.configs.stylistic);

請注意,stylistic 不會取代 recommendedstrictstylistic 會新增額外的規則。

請參閱 configs/stylistic.ts,以取得此設定的確切內容。

stylistic-type-checked

包含所有 stylistic,以及需要類型資訊的其他樣式規則。此設定中新增加的規則,類似於 stylistic 中的規則,同樣具有意見偏好。p>

eslint.config.js
export default tseslint.config(...tseslint.configs.stylisticTypeChecked);

請注意,stylistic-type-checked 不會取代 recommended-type-checkedstrict-type-checkedstylistic-type-checked 會新增額外的規則。

請參閱 configs/stylistic-type-checked.ts,以取得此設定的確切內容。

其他設定

typescript-eslint 包含幾個實用程式設定。

all

啟用所有提供為 typescript-eslint 一部分的規則。請注意,許多規則並不適用於所有程式碼庫,或者應該是配置好的。

請參閱 configs/all.ts,以取得此組態的確切內容。

警告

我們不建議 TypeScript 專案從 plugin:@typescript-eslint/all 延伸。許多規則彼此衝突和/或必須按照每個專案進行組態。

警告

在語意化版本處理 (semver) 下,此設定不被認為是「穩定的」。它的啟用規則和/或其選項可能會在主要版本更新之外變更。

base

只設定執行 typescript-eslint 所需的必要解析器和外掛程式的選項之最小規則組。我們不建議直接使用此選項;請從較早建議的規則延伸。

如果你使用任何建議組態,此組態將自動包含其中。

請參閱 configs/base.ts,以取得此組態的確切內容。

disable-type-checked

一個實用規則組,將停用類型感知程式碼檢查和我們專案中所有可用的類型感知規則。如果你希望你的基本組態涉及類型感知程式碼檢查,並有條件地使用 覆寫 來停用程式碼庫中特定子集的類型感知程式碼檢查,此組態相當好用。

請參閱 configs/disable-type-checked.ts,以取得此組態的確切內容。

資訊

如果你從其他外掛程式使用類型感知規則,你將需要手動停用這些規則或使用他們提供的預製組態來停用它們。

eslint.config.js
export default tseslint.config(
eslint.configs.recommended,
...tseslint.configs.recommendedTypeChecked,
{
languageOptions: {
parserOptions: {
project: true,
tsconfigDirName: import.meta.dirname,
},
},
},
{
files: ['**/*.js'],
...tseslint.configs.disableTypeChecked,
},
);
警告

在語意化版本處理 (semver) 下,此設定不被認為是「穩定的」。它的啟用規則和/或其選項可能會在主要版本更新之外變更。

此規則組應在延伸 eslint:recommended 之後使用。它將停用已由 TypeScript 編譯器檢查的核心 ESLint 規則。此外,它將啟用宣傳使用 TypeScript 允許的較新建構的規則。

eslint.config.js
export default tseslint.config(
eslint.configs.recommended,
tseslint.configs.eslintRecommended,
);

如果你使用任何建議組態,此組態將自動包含其中。

請參閱 configs/eslint-recommended.ts,以取得此組態的確切內容。

recommended 的版本,包含類型檢查規則,並停用任何對應的核心 ESLint 規則。此設定加上 recommended 等同於 recommended-type-checked

.eslintrc.js
module.exports = {
extends: ['plugin:@typescript-eslint/recommended-type-checked-only'],
};

查看 configs/recommended-type-checked-only.ts,了解此設定的確切內容。

strict-type-checked-only

strict 的版本,包含類型檢查規則,並停用任何對應的核心 ESLint 規則。此設定加上 strict 等同於 strict-type-checked

.eslintrc.js
module.exports = {
extends: ['plugin:@typescript-eslint/strict-type-checked-only'],
};

查看 configs/strict-type-checked-only.ts,了解此設定的確切內容。

警告

在語意化版本處理 (semver) 下,此設定不被認為是「穩定的」。它的啟用規則和/或其選項可能會在主要版本更新之外變更。

stylistic-type-checked-only

stylistic 的版本,包含類型檢查規則,並停用任何對應的核心 ESLint 規則。此設定加上 stylistic 等同於 stylistic-type-checked

.eslintrc.js
module.exports = {
extends: ['plugin:@typescript-eslint/stylistic-type-checked-only'],
};

查看 configs/stylistic-type-checked-only.ts,了解此設定的確切內容。

建議設定變更

如果您強烈認為某特定規則應為 (或不應為) 這些設定之一,請附上解釋您推理的詳細論述,並 提交問題

格式化設定

typescript-eslint 提供的所有預設設定皆未啟用格式化規則 (只強制規範程式碼空白和其他瑣事的規則)。我們強烈建議您使用 Prettier 或相同類型的程式碼格式化工具,而非 ESLint 格式化規則。請參閱 關於格式化設定 > 建議用途