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);

// 或者使用 filter
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

参考资料