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