consistent-type-definitions
強制型別定義一致使用
interface
或type
。
🎨
延伸 "plugin:@typescript-eslint/樣式"
在一個 ESLint 組態中 將啟用此規則。
🔧
某些此規則報告的問題可由 ESLint 命令列選項 --fix
自動修正。.
TypeScript 提供兩個常見的方法來定義物件型別:interface
和 type
。
// type alias
type T1 = {
a: string;
b: number;
};
// interface keyword
interface T2 {
a: string;
b: number;
}
這兩者通常非常相似,而且通常可以互換使用。透過一致使用相同的型別宣告樣式,將有助於提高程式碼的可讀性。
.eslintrc.cjs
module.exports = {
"rules": {
"@typescript-eslint/consistent-type-definitions": "error"
}
};
在遊戲場中嘗試此規則 ↗
選項
此規則接受下列選項
type Options = ['interface' | 'type'];
const defaultOptions: Options = ['interface'];
"介面"
(預設值):強制使用介面
來定義物件類型。"類型"
:強制使用類型
來定義物件類型。
介面
- ❌ 錯誤
- ✅ 正確
類型
何時不使用它
如果您特別想出於風格因素而使用介面或類型文字,您可以避免此規則。
然而,請記住不一致的風格會損害專案的可讀性。建議您針對此規則選取單一選項,而該選項要最適用於您的專案。
記錄
和 介面
之間也存在難以靜態捕捉的細微差異。例如,如果您的專案是仰賴特定類型定義風格的另一個專案的依賴項,此規則可能會適得其反。您可以考慮為那些特定情況,使用 ESLint 停用註解,而不是完全停用此規則。