Spec-Zone.ru › ESLint

no-setter-return

Запрет возвращения значений из сетеров

✅ Рекомендуется

Использование конфигурации recommended из @eslint/js в файле конфигурации включает данное правило

Сетеры не могут возвращать значения.

Хотя возвращение значения из сетера не приводит к ошибке, возвращаемое значение игнорируется. Поэтому возвращение значения из сетера либо излишне, либо потенциально является ошибкой, поскольку возвращённое значение не может быть использовано.

Подробное описание правила

Это правило запрещает возвращение значений из сетеров и сообщает об операторах return в функциях-сетерах.

Допускаются только операторы return без значения, поскольку это операторы управления потоком.

Это правило проверяет сетеры в:

  • Объектных литералах.
  • Объявлениях классов и выражениях классов.
  • Дескрипторах свойств в Object.create, Object.defineProperty, Object.defineProperties, и Reflect.defineProperty методах глобальных объектов.

Примеры некорректного кода для этого правила:

Открыть в 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;
    }
});

Примеры корректного кода для этого правила:

Открыть в 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;
    }
});

Обработка TypeScript

Безопасно отключить это правило при использовании TypeScript, поскольку компилятор TypeScript выполняет эту проверку.

Связанные правила

  • getter-return

Версия

Это правило было введено в ESLint v6.7.0.

Дополнительное чтение

setter - JavaScript | MDN

Ресурсы

  • Исходный код правила
  • Тестовый код

© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/no-setter-return

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API