Spec-Zone.ru › ESLint

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
}]

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

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

import { foo1 as foo1 } from "bar";
import { "foo2" as foo2 } from "bar";
export { foo1 as foo1 };
export { foo2 as "foo2" };
export { foo3 as foo3 } from "bar";
export { "foo4" as "foo4" } from "bar";
let { foo3: foo3 } = bar;
let { 'foo4': foo4 } = bar;
function foo({ bar: bar }) {}
({ foo: foo }) => {}

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

Открыть в Playground
/*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 }:

Открыть в Playground
/*eslint no-useless-rename: ["error", { ignoreImport: true }]*/

import { foo as foo } from "bar";

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

Открыть в Playground
/*eslint no-useless-rename: ["error", { ignoreExport: true }]*/

const foo = 1;
export { foo as foo };
export { bar as bar } from "bar";

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

Открыть в Playground
/*eslint no-useless-rename: ["error", { ignoreDestructuring: true }]*/

let { foo: foo } = bar;
function baz({ bar: bar }) {}
({ foo: foo }) => {}

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

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

Совместимость

  • JSCS: disallowIdenticalDestructuringNames

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

  • object-shorthand

Версия

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

Ресурсы

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

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

Spec-Zone.ru

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