no-useless-rename
Запрещает переименовывать импорты, экспорты и деструктурированные присваивания в то же имя
Некоторые проблемы, обнаруживаемые этим правилом, можно исправить автоматически с помощью параметра командной строки --fix
ES2015 позволяет переименовывать ссылки в инструкциях импорта и экспорта, а также в деструктурированных присваиваниях. Это даёт программистам лаконичный синтаксис для выполнения этих операций с переименованием таких ссылок:
import { foo as bar } from "baz";
export { foo as bar };
let { foo: bar } = baz;
С помощью этого синтаксиса можно переименовать ссылку в то же имя. Это совершенно избыточная операция, поскольку она ничем не отличается от отсутствия переименования. Например, этот код:
import { foo as foo } from "bar";
export { foo as foo };
let { foo: foo } = bar;
эквивалентен следующему:
import { foo } from "bar";
export { foo };
let { foo } = bar;
Подробное описание правила
Это правило запрещает переименовывать импорты, экспорты и деструктурированные присваивания в то же имя.
Параметры
Это правило позволяет более тонко управлять проверками с помощью следующих параметров:
-
ignoreImport: если задано значениеtrue, правило не проверяет импорты -
ignoreExport: если задано значениеtrue, правило не проверяет экспорты -
ignoreDestructuring: если задано значениеtrue, правило не проверяет деструктурированные присваивания
По умолчанию для всех параметров задано значение false:
"no-useless-rename": ["error", {
"ignoreDestructuring": false,
"ignoreImport": false,
"ignoreExport": false
}]
Примеры неправильного кода для этого правила с настройками по умолчанию:
/*eslint no-useless-rename: "error"*/
import { } from "bar";
import { } from "bar";
export { };
export { };
export { } from "bar";
export { } from "bar";
let { } = bar;
let { } = bar;
function foo({ }) {}
({ }) => {}
Примеры правильного кода для этого правила с настройками по умолчанию:
/*eslint no-useless-rename: "error"*/
import * as foo1 from "foo";
import { foo2 } from "bar";
import { foo as bar1 } from "baz";
import { "foo" as bar2 } from "baz";
export { foo };
export { foo as bar1 };
export { foo as "bar2" };
export { foo as bar3 } from "foo";
export { "foo" as "bar4" } from "foo";
let { foo } = bar;
let { foo: bar } = baz;
let { [qux]: qux } = bar;
function foo3({ bar }) {}
function foo4({ bar: baz }) {}
({ foo }) => {}
({ foo: bar }) => {}
Примеры правильного кода для этого правила с параметром { ignoreImport: true }:
/*eslint no-useless-rename: ["error", { ignoreImport: true }]*/
import { foo as foo } from "bar";
Примеры правильного кода для этого правила с параметром { ignoreExport: true }:
/*eslint no-useless-rename: ["error", { ignoreExport: true }]*/
const foo = 1;
export { foo as foo };
export { bar as bar } from "bar";
Примеры правильного кода для этого правила с параметром { ignoreDestructuring: true }:
/*eslint no-useless-rename: ["error", { ignoreDestructuring: true }]*/
let { foo: foo } = bar;
function baz({ bar: bar }) {}
({ foo: foo }) => {}
Когда не следует использовать это правило
Это правило можно безопасно отключить, если вас не беспокоит избыточное переименование импортов, экспортов и деструктурированных присваиваний.
Совместимость
Связанные правила
Версия
Это правило добавлено в ESLint v2.11.0.
Ресурсы
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/no-useless-rename