no-duplicate-imports
Запрещает повторный импорт модулей
Использование одного оператора import для каждого модуля сделает код понятнее, поскольку все импортируемые элементы из этого модуля будут видны в одной строке.
В следующем примере импорт module в строке 1 повторяется в строке 3. Их можно объединить, чтобы сделать список импортов короче.
import { merge } from 'module';
import something from 'another-module';
import { find } from 'module';
Описание правила
Это правило требует, чтобы все объединяемые импорты из одного модуля находились в одном операторе import.
Пример неправильного кода для этого правила:
/*eslint no-duplicate-imports: "error"*/
import { merge } from 'module';
import something from 'another-module';
Пример правильного кода для этого правила:
/*eslint no-duplicate-imports: "error"*/
import { merge, find } from 'module';
import something from 'another-module';
Пример правильного кода для этого правила:
/*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 }:
/*eslint no-duplicate-imports: ["error", { "includeExports": true }]*/
import { merge } from 'module';
Пример правильного кода для этого правила с параметром { "includeExports": true }:
/*eslint no-duplicate-imports: ["error", { "includeExports": true }]*/
import { merge, find } from 'module';
export { find };
Пример правильного кода для этого правила с параметром { "includeExports": true }:
/*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 } по умолчанию:
/*eslint no-duplicate-imports: ["error", { "allowSeparateTypeImports": false }]*/
import { someValue } from 'module';
Пример правильного кода TypeScript для этого правила со значением параметра { "allowSeparateTypeImports": false } по умолчанию:
/*eslint no-duplicate-imports: ["error", { "allowSeparateTypeImports": false }]*/
import { someValue, type SomeType } from 'module';
Пример неправильного кода TypeScript для этого правила с параметром { "allowSeparateTypeImports": true }:
/*eslint no-duplicate-imports: ["error", { "allowSeparateTypeImports": true }]*/
import { someValue } from 'module';
import type { SomeType } from 'module';
Пример правильного кода TypeScript для этого правила с параметром { "allowSeparateTypeImports": true }:
/*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