跳到主要內容

class-literal-property-style

強制類別上的字面量以一致的樣式公開。

🎨

延伸 "plugin:@typescript-eslint/"stylistic" ESLint 設定 中啟用此規則。

💡

此規則報告的一些問題可以透過編輯器的建議手動修復 .

某些 TypeScript 應用程序使用帶有 readonly 修飾符的欄位將字面量值儲存在類別上,以防止它們被重新賦值。但是,在編寫可能由 JavaScript 使用者使用的 TypeScript 庫時,使用 getter 公開這些字面量通常更安全,因為 readonly 修飾符是在編譯類型時強制執行的。

此規則旨在確保以一致的方式公開類別公開的字面量,使用上述兩種樣式之一。默認情況下,此規則更喜歡 fields 樣式,因為這意味著 JS 不必設置和拆卸函數閉包。

.eslintrc.cjs
module.exports = {
"rules": {
"@typescript-eslint/class-literal-property-style": "error"
}
};

在 Playground 中試用此規則 ↗

選項

此規則接受以下選項

type Options = ['fields' | 'getters'];

const defaultOptions: Options = ['fields'];
注意

此規則僅檢查常數*字面量*值(字串、模板字串、數字、bigint、布林值、正則表達式、null)。它不檢查物件或陣列,因為在這些情況下,唯讀欄位的行為與 getter 不同。它也不檢查函數,因為使用帶有箭頭函數值的唯讀欄位作為自動綁定方法是一種常見模式。這是因為這些類型可以被變異,並且帶有關於其使用的更複雜的含義。

"fields"

此樣式檢查返回字面量值的任何 getter 方法,並要求使用帶有 readonly 修飾符的欄位來定義它們。

具有 fields 樣式的程式碼範例

class Mx {
public static get myField1() {
return 1;
}

private get ['myField2']() {
return 'hello world';
}
}
在 Playground 中開啟

"getters"

此樣式檢查分配了字面量值的任何 readonly 欄位,並要求將它們定義為 getter。此樣式與 @typescript-eslint/prefer-readonly 規則配合良好,因為它將識別可以是 readonly 的欄位,因此應該將其設為 getter。

具有 getters 樣式的程式碼範例

class Mx {
readonly myField1 = 1;
readonly myField2 = `hello world`;
private readonly myField3 = 'hello world';
}
在 Playground 中開啟

何時不使用

當您沒有強烈偏好,或者不想強制執行特定的樣式來公開類別的字面量值時。

資源