共享設定檔
ESLint 共享設定檔 會提供您可以著手開始使用的完整規則設定清單。@typescript-eslint/eslint-plugin
納入您可延伸的內建設定檔,以納入建議的入門規則。
除了
all
、strict
和strict-type-checked
之外,所有設定檔都視為「穩定」。規則的新增與移除被當作破壞性變更,其只會在主要版本升級時才會執行。
開始使用
請先參閱 Getting Started > Quickstart,設定 ESLint 組態檔案。Packages > typescript-eslint 包含更多關於 tseslint
協助工具的文件。
未開啟類型檢查的專案
如果專案未啟用 類型化檢查,我們建議啟用 recommended
和 stylistic
組態作為開始。
- 扁平化組態
- 舊式組態
export default tseslint.config(
eslint.configs.recommended,
...tseslint.configs.recommended,
...tseslint.configs.stylistic,
);
module.exports = {
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/recommended',
'plugin:@typescript-eslint/stylistic',
],
};
如果貴專案的大部分開發人員熟悉 TypeScript 和 typescript-eslint,請考慮將
recommended
改為strict
。
已開啟類型檢查的專案
如果專案已啟用 類型化檢查,我們建議啟用 recommended-type-checked
和 stylistic-type-checked
組態作為開始。
- 扁平化組態
- 舊式組態
export default tseslint.config(
eslint.configs.recommended,
...tseslint.configs.recommendedTypeChecked,
...tseslint.configs.stylisticTypeChecked,
);
module.exports = {
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/recommended-type-checked',
'plugin:@typescript-eslint/stylistic-type-checked',
],
};
如果貴專案的大部分開發人員熟悉 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
建議的程式碼正確性規則,您可以直接使用,無需額外設定。這些規則的報告幾乎總是針對錯誤的做法和/或可能的錯字。recommended
也會停用已知的核心 ESLint 規則,這些規則會與 typescript-eslint 規則產生衝突或在 TypeScript 程式碼庫中造成問題。
- 扁平化組態
- 舊式組態
export default tseslint.config(...tseslint.configs.recommended);
module.exports = {
extends: ['plugin:@typescript-eslint/recommended'],
};
參閱 configs/recommended.ts
以取得此設定檔的確切內容。
recommended-type-checked
包含所有 recommended
以及需要類型資訊的其他建議規則。此設定檔中新增加的規則與 recommended
中的規則一樣實用。
- 扁平化組態
- 舊式組態
export default tseslint.config(...tseslint.configs.recommendedTypeChecked);
module.exports = {
extends: ['plugin:@typescript-eslint/recommended-type-checked'],
};
參閱 configs/recommended-type-checked.ts
以取得此設定檔的確切內容。
strict
包含所有 recommended
,以及其他嚴格的規則,這些規則也可以偵測到錯誤。strict
中增加的規則比建議的規則更主觀,且可能不適用於所有專案。
- 扁平化組態
- 舊式組態
export default tseslint.config(...tseslint.configs.strict);
module.exports = {
extends: ['plugin:@typescript-eslint/strict'],
};
某些規則也在 recommended
中啟用,在此設定檔中預設為更嚴格的設定。參閱 configs/strict.ts
以取得此設定檔的確切內容。
我們建議 TypeScript 專案僅在一定比例的開發人員非常精通 TypeScript 時,才從 plugin:@typescript-eslint/strict
延伸。
在語意化版本處理 (semver) 下,此設定不被認為是「穩定的」。它的啟用規則和/或其選項可能會在主要版本更新之外變更。
strict-type-checked
包含所有 recommended
、recommended-type-checked
和 strict
,以及需要類型資訊的其他嚴格規則。此設定中新增加的規則,類似於 strict
中的規則,同樣具有實用性且意見偏好。
- 扁平化組態
- 舊式組態
export default tseslint.config(...tseslint.configs.strictTypeChecked);
module.exports = {
extends: ['plugin:@typescript-eslint/strict-type-checked'],
};
一些也在 recommended-type-checked
啟用的規則,預設會在這個設定中以更嚴格的設定為準。請參閱 configs/strict-type-checked.ts
,以取得此設定的確切內容。
我們建議 TypeScript 專案僅在一定比例的開發人員非常精通 TypeScript 時,才從 plugin:@typescript-eslint/strict-type-checked
延伸。
在語意化版本處理 (semver) 下,此設定不被認為是「穩定的」。它的啟用規則和/或其選項可能會在主要版本更新之外變更。
stylistic
對於現代 TypeScript 程式碼庫來說,被視為最佳實務的規則,但不會影響程式邏輯。這些規則基本上都會意見偏好地強制執行較簡單的程式碼模式。
- 扁平化組態
- 舊式組態
export default tseslint.config(...tseslint.configs.stylistic);
module.exports = {
extends: ['plugin:@typescript-eslint/stylistic'],
};
請注意,stylistic
不會取代 recommended
或 strict
。stylistic
會新增額外的規則。
請參閱 configs/stylistic.ts
,以取得此設定的確切內容。
stylistic-type-checked
包含所有 stylistic
,以及需要類型資訊的其他樣式規則。此設定中新增加的規則,類似於 stylistic
中的規則,同樣具有意見偏好。p>
- 扁平化組態
- 舊式組態
export default tseslint.config(...tseslint.configs.stylisticTypeChecked);
module.exports = {
extends: ['plugin:@typescript-eslint/stylistic-type-checked'],
};
請注意,stylistic-type-checked
不會取代 recommended-type-checked
或 strict-type-checked
。stylistic-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
,以取得此組態的確切內容。
如果你從其他外掛程式使用類型感知規則,你將需要手動停用這些規則或使用他們提供的預製組態來停用它們。
- 扁平化組態
- 舊式組態
export default tseslint.config(
eslint.configs.recommended,
...tseslint.configs.recommendedTypeChecked,
{
languageOptions: {
parserOptions: {
project: true,
tsconfigDirName: import.meta.dirname,
},
},
},
{
files: ['**/*.js'],
...tseslint.configs.disableTypeChecked,
},
);
module.exports = {
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/recommended-type-checked',
],
parser: '@typescript-eslint',
parserOptions: {
project: true,
__tsconfigRootDir: __dirname,
},
root: true,
overrides: [
{
files: ['**/*.js'],
extends: ['plugin:@typescript-eslint/disable-type-checked'],
},
],
};
在語意化版本處理 (semver) 下,此設定不被認為是「穩定的」。它的啟用規則和/或其選項可能會在主要版本更新之外變更。
eslint-recommended
此規則組應在延伸 eslint:recommended
之後使用。它將停用已由 TypeScript 編譯器檢查的核心 ESLint 規則。此外,它將啟用宣傳使用 TypeScript 允許的較新建構的規則。
- 扁平化組態
- 舊式組態
export default tseslint.config(
eslint.configs.recommended,
tseslint.configs.eslintRecommended,
);
module.exports = {
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/eslint-recommended',
],
};
如果你使用任何建議組態,此組態將自動包含其中。
請參閱 configs/eslint-recommended.ts
,以取得此組態的確切內容。
recommended-type-checked-only
recommended
的版本,僅包含類型檢查規則,並停用任何對應的核心 ESLint 規則。此設定加上 recommended
等同於 recommended-type-checked
。
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
。
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
。
module.exports = {
extends: ['plugin:@typescript-eslint/stylistic-type-checked-only'],
};
查看 configs/stylistic-type-checked-only.ts
,了解此設定的確切內容。
建議設定變更
如果您強烈認為某特定規則應為 (或不應為) 這些設定之一,請附上解釋您推理的詳細論述,並 提交問題。
格式化設定
typescript-eslint 提供的所有預設設定皆未啟用格式化規則 (只強制規範程式碼空白和其他瑣事的規則)。我們強烈建議您使用 Prettier 或相同類型的程式碼格式化工具,而非 ESLint 格式化規則。請參閱 關於格式化設定 > 建議用途。