跳到內容

typescript/no-extraneous-class 可疑

此規則的作用

當類別沒有任何非靜態成員時,例如當類別僅作為靜態命名空間使用時,此規則會發出警告。此規則也會警告只有建構子而沒有欄位的類別。這些類別通常可以用獨立函式取代。

為什麼這是不好的做法?

來自物件導向程式設計範式的使用者可能會將他們的工具函式包裝在額外的類別中,而不是將它們放在 ECMAScript 模組的頂層。在 JavaScript 和 TypeScript 專案中,這樣做通常是不必要的。

包裝類別會增加程式碼的認知複雜性,而不會增加任何結構上的改進。

無論將什麼放在它們上面,例如工具函式,都已經透過位於模組中而被組織起來了。

作為替代方案,您可以導入 * as ... 模組以將它們全部放在一個物件中。當您開始輸入屬性名稱時,IDE 無法為靜態類別或命名空間導入的屬性提供良好的建議。

當它們都在類別上時,靜態分析程式碼以查找未使用的變數等等會更加困難(請參閱:在 TypeScript 中查找無效程式碼(和無效類型))。

範例

ts
class StaticConstants {
  static readonly version = 42;

  static isProduction() {
    return process.env.NODE_ENV === "production";
  }
}

class HelloWorldLogger {
  constructor() {
    console.log("Hello, world!");
  }
}

abstract class Foo {}

參考資料

在 MIT 授權下發布。