no-setter-return
禁止从 setter 中返回值
✅ 推荐
在配置文件中使用来自 @eslint/js
的 recommended
配置将启用此规则。
Setter 不能返回值。
虽然从 setter 中返回值不会产生错误,但返回的值会被忽略。因此,从 setter 中返回值要么是不必要的,要么是可能的错误,因为返回的值无法使用。
规则详情
此规则禁止从 setter 中返回值,并报告 setter 函数中的 return
语句。
仅允许不带值的 return
,因为它是一个控制流语句。
此规则检查以下情况下的 setter:
- 对象字面量。
- 类声明和类表达式。
- 全局对象的
Object.create
、Object.defineProperty
、Object.defineProperties
和Reflect.defineProperty
方法中的属性描述符。
此规则的错误代码示例
在在线运行中打开
/*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;
}
this.val = value;
}
};
Object.defineProperty(foo, "bar", {
set(value) {
if (value < 0) {
}
this.val = value;
}
});
此规则的正确代码示例
在在线运行中打开
/*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;
}
});
由 TypeScript 处理
当使用 TypeScript 时,禁用此规则是安全的,因为 TypeScript 的编译器会强制执行此检查。
相关规则
版本
此规则是在 ESLint v6.7.0 中引入的。