Skip to content
← Back to rules

typescript/no-array-delete Correctness

This rule is turned on by default when type-aware linting is enabled.
💭 This rule requires type information.
💡 A suggestion 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;

如何使用

To enable this rule using the config file or in the CLI, you can use:

json
{
  "options": {
    "typeAware": true
  },
  "rules": {
    "typescript/no-array-delete": "error"
  }
}
ts
import { defineConfig } from "oxlint";

export default defineConfig({
  options: { typeAware: true },
  rules: {
    "typescript/no-array-delete": "error",
  },
});
bash
oxlint --type-aware --deny typescript/no-array-delete

版本

此规则添加于 v1.12.0。

参考资料