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"*/

const 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"*/

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;
    }
});

Параметры

У этого правила нет параметров.

Обрабатывается TypeScript

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

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

  • getter-return

Версия

Это правило появилось в ESLint v6.7.0.

Дополнительная литература

сеттер — JavaScript | MDN
developer.mozilla.org

Ресурсы

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

© 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