跳到主要內容

consistent-type-definitions

強制型別定義一致使用 interfacetype

🎨

延伸 "plugin:@typescript-eslint/樣式" 在一個 ESLint 組態中 將啟用此規則。

🔧

某些此規則報告的問題可由 ESLint 命令列選項 --fix 自動修正。.

TypeScript 提供兩個常見的方法來定義物件型別:interfacetype

// 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'];
  • "介面" (預設值):強制使用 介面來定義物件類型。
  • "類型":強制使用 類型來定義物件類型。

介面

type T = { x: number };
於遊樂場中開啟

類型

interface T {
x: number;
}
於遊樂場中開啟

何時不使用它

如果您特別想出於風格因素而使用介面或類型文字,您可以避免此規則。

然而,請記住不一致的風格會損害專案的可讀性。建議您針對此規則選取單一選項,而該選項要最適用於您的專案。

記錄介面之間也存在難以靜態捕捉的細微差異。例如,如果您的專案是仰賴特定類型定義風格的另一個專案的依賴項,此規則可能會適得其反。您可以考慮為那些特定情況,使用 ESLint 停用註解,而不是完全停用此規則。

資源