版本

no-setter-return

不允許從 setter 回傳值

建議

設定檔中使用 @eslint/jsrecommended 設定啟用此規則

Setter 無法回傳值。

雖然從 setter 回傳值不會產生錯誤,但回傳的值會被忽略。因此,從 setter 回傳值要么是不必要的,要么是可能的錯誤,因為回傳的值無法使用。

規則詳情

此規則不允許從 setter 回傳值,並報告 setter 函式中的 return 陳述式。

僅允許沒有值的 return,因為它是控制流程陳述式。

此規則檢查以下位置的 setter:

  • 物件字面值。
  • 類別宣告和類別表達式。
  • 全域物件的 Object.createObject.definePropertyObject.definePropertiesReflect.defineProperty 方法中的屬性描述符。

此規則的錯誤程式碼範例

在遊樂場中開啟
/*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;
    }
});

此規則的正確程式碼範例

在遊樂場中開啟
/*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 中引入的。

延伸閱讀

資源

變更語言