Versions

no-setter-return

Disallow returning values from setters

Recommended

The "extends": "eslint:recommended" property in a configuration file enables this rule

设置器不能有返回值。

虽然从 setter 返回一个值不会产生错误,但返回的值被忽略了。因此,从 setter 返回一个值要么是不必要的,要么是一个可能的错误,因为返回的值不能被使用。

规则细节

使用此规则禁用从 setter 返回值,并在 setter 函数中报告return 语句。

只有没有值的 return 是允许的,因为它是一个控制流语句。

这条规则会检查以下范围中的设置器:

  • 对象字面量。
  • 类声明和类表达式。
  • 全局对象的 Object.createObject.definePropertyObject.definePropertiesReflect.defineProperty 方法中的属性描述词。

使用此规则的错误示例:

Open in Playground
/*eslint no-setter-return: "error"*/

var foo = {
    set a(value) {
        this.val = value;
        return value;
    }
};

class Foo {
    set a(value) {
        this.val = value * 2;
        return this.val;
    }
}

const Bar = class {
    static set a(value) {
        if (value < 0) {
            this.val = 0;
            return 0;
        }
        this.val = value;
    }
};

Object.defineProperty(foo, "bar", {
    set(value) {
        if (value < 0) {
            return false;
        }
        this.val = value;
    }
});

使用此规则的正确示例:

Open in Playground
/*eslint no-setter-return: "error"*/

var foo = {
    set a(value) {
        this.val = value;
    }
};

class Foo {
    set a(value) {
        this.val = value * 2;
    }
}

const Bar = class {
    static set a(value) {
        if (value < 0) {
            this.val = 0;
            return;
        }
        this.val = value;
    }
};

Object.defineProperty(foo, "bar", {
    set(value) {
        if (value < 0) {
            throw new Error("Negative value.");
        }
        this.val = value;
    }
});

Handled by TypeScript

It is safe to disable this rule when using TypeScript because TypeScript's compiler enforces this check.

Version

This rule was introduced in ESLint v6.7.0.

Further Reading

Resources

更改语言