Spec-Zone.ru › ESLint

no-duplicate-imports

Запрещает повторный импорт модулей

Использование одного оператора import для каждого модуля сделает код понятнее, поскольку все импортируемые элементы из этого модуля будут видны в одной строке.

В следующем примере импорт module в строке 1 повторяется в строке 3. Их можно объединить, чтобы сделать список импортов короче.

import { merge } from 'module';
import something from 'another-module';
import { find } from 'module';

Описание правила

Это правило требует, чтобы все объединяемые импорты из одного модуля находились в одном операторе import.

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

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

import { merge } from 'module';
import something from 'another-module';
import { find } from 'module';

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

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

import { merge, find } from 'module';
import something from 'another-module';

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

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

// not mergeable
import { merge } from 'module';
import * as something from 'module';

Параметры

Это правило принимает объект с параметрами:

  • "includeExports": true (по умолчанию false) проверяет экспорты в дополнение к импортам.
  • "allowSeparateTypeImports": true (по умолчанию false) разрешает импорт типа наряду с импортом значения из того же модуля в файлах TypeScript.

includeExports

При повторном экспорте из импортированного модуля следует добавить импорты в оператор import и экспортировать их напрямую, а не использовать export ... from.

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

Открыть в Playground
/*eslint no-duplicate-imports: ["error", { "includeExports": true }]*/

import { merge } from 'module';

export { find } from 'module';

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

Открыть в Playground
/*eslint no-duplicate-imports: ["error", { "includeExports": true }]*/

import { merge, find } from 'module';

export { find };

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

Открыть в Playground
/*eslint no-duplicate-imports: ["error", { "includeExports": true }]*/

import { merge, find } from 'module';

// cannot be merged with the above import
export * as something from 'module';

// cannot be written differently
export * from 'module';

allowSeparateTypeImports

TypeScript позволяет импортировать типы с помощью import type. По умолчанию это правило отмечает случаи import type с тем же спецификатором, что и у import. Параметр allowSeparateTypeImports позволяет изменить это поведение.

Пример неправильного кода TypeScript для этого правила со значением параметра { "allowSeparateTypeImports": false } по умолчанию:

Открыть в Playground
/*eslint no-duplicate-imports: ["error", { "allowSeparateTypeImports": false }]*/

import { someValue } from 'module';
import type { SomeType } from 'module';

Пример правильного кода TypeScript для этого правила со значением параметра { "allowSeparateTypeImports": false } по умолчанию:

Открыть в Playground
/*eslint no-duplicate-imports: ["error", { "allowSeparateTypeImports": false }]*/

import { someValue, type SomeType } from 'module';

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

Открыть в Playground
/*eslint no-duplicate-imports: ["error", { "allowSeparateTypeImports": true }]*/

import { someValue } from 'module';
import type { SomeType } from 'module';
import type { AnotherType } from 'module';

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

Открыть в Playground
/*eslint no-duplicate-imports: ["error", { "allowSeparateTypeImports": true }]*/

import { someValue } from 'module';
import type { SomeType, AnotherType } from 'module';

Версия

Это правило появилось в ESLint v2.5.0.

Ресурсы

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

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

Spec-Zone.ru

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