Skip to content
← Back to rules

typescript/no-misused-new 正しさ

This rule is turned on by default.

何を行うか

new および constructor の有効な定義を強制します。このルールは、クラスが new という名前のメソッドを定義したり、インターフェースが constructor という名前のメソッドを定義することを防ぎます。

なぜ問題なのか

JavaScript のクラスは、クラスインスタンスが新たに作成されたときに実行される constructor メソッドを定義できます。

TypeScript では、静的クラスオブジェクトを記述するインターフェースが new() メソッドを定義できるようになっています(ただし、実際のコードではめったに使われません)。
初心者が JavaScript クラスや TypeScript インターフェースを使う場合、constructornew どちらを使うべきか混同することがあります。

このルールに違反する 誤り なコードの例:

typescript
declare class C {
  new(): C;
}
typescript
interface I {
  new (): I;
  constructor(): void;
}

このルールに準拠する 正しい コードの例:

typescript
declare class C {
  constructor();
}
typescript
interface I {
  new (): C;
}

使用方法

設定ファイルまたは CLI でこのルールを 有効化 するには、次のように使用します:

json
{
  "rules": {
    "typescript/no-misused-new": "error"
  }
}
bash
oxlint --deny typescript/no-misused-new

参照