Skip to content
← Back to rules

eslint/no-new-wrappers Pedantic

🛠️ An auto-fix is available for this rule.

它的作用

禁止对 StringNumberBoolean 对象使用 new 运算符。

这为什么不好?

第一个问题是,原始值包装对象实际上就是对象。这意味着 typeof 会返回 "object",而不是 "string""number""boolean"。第二个问题出在布尔对象上。每个对象都是真值,这意味着 Boolean 的实例即使其实际值为 false,也总会解析为 true

https://eslint.org/docs/latest/rules/no-new-wrappers

示例

以下是此规则的错误代码示例:

js
var stringObject = new String("Hello world");
var numberObject = new Number(33);
var booleanObject = new Boolean(false);
var symbolObject = new Symbol("foo"); // symbol 不是构造函数

以下是此规则的正确代码示例:

js
var stringObject = "Hello world";
var stringObject2 = String(value);
var numberObject = Number(value);
var booleanObject = Boolean(value);
var symbolObject = Symbol("foo");

如何使用

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

json
{
  "rules": {
    "no-new-wrappers": "error"
  }
}
ts
import { defineConfig } from "oxlint";

export default defineConfig({
  rules: {
    "no-new-wrappers": "error",
  },
});
bash
oxlint --deny no-new-wrappers

版本

此规则于 v0.2.10 中添加。

参考资料