
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 中引入的。
延伸閱讀
