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.create
、Object.defineProperty
、Object.defineProperties
和Reflect.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.
Related Rules
Version
This rule was introduced in ESLint v6.7.0.