
no-setter-return
Disallow returning values from setters
Using the recommended
config from @eslint/js
in a configuration file
enables this rule
Setters cannot return values.
While returning a value from a setter does not produce an error, the returned value is being ignored. Therefore, returning a value from a setter is either unnecessary or a possible error, since the returned value cannot be used.
Rule Details
This rule disallows returning values from setters and reports return
statements in setter functions.
Only return
without a value is allowed, as it’s a control flow statement.
This rule checks setters in:
- Object literals.
- Class declarations and class expressions.
- Property descriptors in
Object.create
,Object.defineProperty
,Object.defineProperties
, andReflect.defineProperty
methods of the global objects.
Examples of incorrect code for this rule:
/*eslint no-setter-return: "error"*/
const 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;
}
this.val = value;
}
};
Object.defineProperty(foo, "bar", {
set(value) {
if (value < 0) {
}
this.val = value;
}
});
Examples of correct code for this rule:
/*eslint no-setter-return: "error"*/
const 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.
Further Reading
