Spec-Zone.ru › ESLint

no-empty-function

Запрет на пустые функции

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

function foo() {
    // do nothing.
}

В особенности, пустой блок стрелочных функций может сбить с толку разработчиков. Он очень похож на пустой литерал объекта.

list.map(() => {});   // This is a block, would return undefined.
list.map(() => ({})); // This is an empty object.

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

Это правило направлено на устранение пустых функций. Функция не будет считаться проблемой, если содержит комментарий.

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

Открыть в Playground
/*eslint no-empty-function: "error"*/

function foo() {}

var bar = function() {};

var bar = () => {};

function* baz() {}

var bar = function*() {};

var obj = {
    foo: function() {},

    foo: function*() {},

    foo() {},

    *foo() {},

    get foo() {},

    set foo(value) {}
};

class A {
    constructor() {}

    foo() {}

    *foo() {}

    get foo() {}

    set foo(value) {}

    static foo() {}

    static *foo() {}

    static get foo() {}

    static set foo(value) {}
}

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

Открыть в Playground
/*eslint no-empty-function: "error"*/

function foo() {
    // do nothing.
}

var baz = function() {
    // any clear comments.
};

var baz = () => {
    bar();
};

function* foobar() {
    // do nothing.
}

var baz = function*() {
    // do nothing.
};

var obj = {
    foo: function() {
        // do nothing.
    },

    foo: function*() {
        // do nothing.
    },

    foo() {
        // do nothing.
    },

    *foo() {
        // do nothing.
    },

    get foo() {
        // do nothing.
    },

    set foo(value) {
        // do nothing.
    }
};

class A {
    constructor() {
        // do nothing.
    }

    foo() {
        // do nothing.
    }

    *foo() {
        // do nothing.
    }

    get foo() {
        // do nothing.
    }

    set foo(value) {
        // do nothing.
    }

    static foo() {
        // do nothing.
    }

    static *foo() {
        // do nothing.
    }

    static get foo() {
        // do nothing.
    }

    static set foo(value) {
        // do nothing.
    }
}

Параметры

У этого правила есть возможность разрешить пустые функции определенных типов.

  • allow (string[]) — Список типов, для которых разрешены пустые функции. Элементы списка — это некоторые из следующих строк. По умолчанию пустой массив ([]).
    • "functions" — Обычные функции.
    • "arrowFunctions" — Стрелочные функции.
    • "generatorFunctions" — Генераторные функции.
    • "methods" — Методы класса и сокращенные записи методов для литералов объектов.
    • "generatorMethods" — Методы класса и сокращенные записи методов для генераторных литералов объектов.
    • "getters" — Геттеры.
    • "setters" — Сеттеры.
    • "constructors" — Конструкторы класса.
    • "asyncFunctions" — Асинхронные функции.
    • "asyncMethods" — Асинхронные методы класса и сокращенные записи методов для асинхронных литералов объектов.

allow: functions

Примеры правильного кода для параметра { "allow": ["functions"] }:

Открыть в Playground
/*eslint no-empty-function: ["error", { "allow": ["functions"] }]*/

function foo() {}

var bar = function() {};

var obj = {
    foo: function() {}
};

allow: arrowFunctions

Примеры правильного кода для параметра { "allow": ["arrowFunctions"] }:

Открыть в Playground
/*eslint no-empty-function: ["error", { "allow": ["arrowFunctions"] }]*/

var foo = () => {};

allow: generatorFunctions

Примеры правильного кода для параметра { "allow": ["generatorFunctions"] }:

Открыть в Playground
/*eslint no-empty-function: ["error", { "allow": ["generatorFunctions"] }]*/

function* foo() {}

var bar = function*() {};

var obj = {
    foo: function*() {}
};

allow: methods

Примеры правильного кода для параметра { "allow": ["methods"] }:

Открыть в Playground
/*eslint no-empty-function: ["error", { "allow": ["methods"] }]*/

var obj = {
    foo() {}
};

class A {
    foo() {}
    static foo() {}
}

allow: generatorMethods

Примеры правильного кода для параметра { "allow": ["generatorMethods"] }:

Открыть в Playground
/*eslint no-empty-function: ["error", { "allow": ["generatorMethods"] }]*/

var obj = {
    *foo() {}
};

class A {
    *foo() {}
    static *foo() {}
}

allow: getters

Примеры правильного кода для параметра { "allow": ["getters"] }:

Открыть в Playground
/*eslint no-empty-function: ["error", { "allow": ["getters"] }]*/

var obj = {
    get foo() {}
};

class A {
    get foo() {}
    static get foo() {}
}

allow: setters

Примеры правильного кода для параметра { "allow": ["setters"] }:

Открыть в Playground
/*eslint no-empty-function: ["error", { "allow": ["setters"] }]*/

var obj = {
    set foo(value) {}
};

class A {
    set foo(value) {}
    static set foo(value) {}
}

allow: constructors

Примеры правильного кода для параметра { "allow": ["constructors"] }:

Открыть в Playground
/*eslint no-empty-function: ["error", { "allow": ["constructors"] }]*/

class A {
    constructor() {}
}

allow: asyncFunctions

Примеры правильного кода для параметров { "allow": ["asyncFunctions"] }:

Открыть в Playground
/*eslint no-empty-function: ["error", { "allow": ["asyncFunctions"] }]*/

async function a(){}

allow: asyncMethods

Примеры правильного кода для параметров { "allow": ["asyncMethods"] }:

Открыть в Playground
/*eslint no-empty-function: ["error", { "allow": ["asyncMethods"] }]*/

var obj = {
    async foo() {}
};

class A {
    async foo() {}
    static async foo() {}
}

Когда не стоит использовать

Если вы не хотите получать уведомления о пустых функциях, то можете отключить это правило.

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

  • no-empty

Версия

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

Ресурсы

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

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

Spec-Zone.ru

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