Skip to content
← Back to rules

eslint/no-new-wrappers 谨慎

An auto-fix is available for this rule.

作用

禁止对 StringNumberBoolean 对象使用 new 操作符

为什么这是个问题?

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

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

如何使用

通过配置文件或命令行启用此规则,可以使用:

json
{
  "rules": {
    "no-new-wrappers": "error"
  }
}
bash
oxlint --deny no-new-wrappers

参考资料