Skip to content
← Back to rules

typescript/no-array-delete 正しさ

This rule is turned on by default when type-aware linting is enabled.
💭 This rule requires type information.
An auto-fix is available for this rule.

何をするか

このルールは、配列値に対して delete 演算子を使用することを禁止します。

なぜ悪いのか

配列に対して delete 演算子を使用すると、要素が実際に削除されるのではなく、配列の位置が undefined に置き換えられます。これは通常の意図とは異なります。代わりに、Array.prototype.splice() のようなメソッドを使用して、配列から要素を適切に削除すべきです。

このルールに対する不正なコードの例:

ts
declare const arr: number[];
delete arr[0];

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

ts
declare const arr: number[];
arr.splice(0, 1);

// またはフィルターメソッドを使用
const filteredArr = arr.filter((_, index) => index !== 0);

// オブジェクトに対する delete は許可される
declare const obj: { a?: number };
delete obj.a;

使い方

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

json
{
  "rules": {
    "typescript/no-array-delete": "error"
  }
}
bash
oxlint --type-aware --deny typescript/no-array-delete

参照