import/no-duplicates 风格
它的作用
报告在同一模块中同一个解析路径被导入超过一次的情况。 这有助于避免不必要的重复导入,保持代码整洁。
为什么这是个问题?
多次导入同一个模块可能导致冗余和不必要的复杂性。 同时会影响可维护性,因为可能会让开发者感到困惑,并导致在整个代码库中对导入的使用不一致。
示例
以下为 错误 的代码示例:
javascript
import { foo } from "./module";
import { bar } from "./module";
import a from "./module";
import { b } from "./module";以下为 正确 的代码示例:
typescript
import { foo, bar } from "./module";
import * as a from "foo"; // 命名空间导入需分条声明
import { b } from "foo";
import { c } from "foo"; // 分离的类型导入,除非
import type { d } from "foo"; // `prefer-inline` 为 true配置
此规则接受一个包含以下属性的配置对象:
considerQueryString
type: boolean
default: false
当设置为 true 时,规则在判断是否为重复导入时会考虑导入路径中的查询字符串部分。 这在使用 webpack 等工具时特别有用,这些工具通过查询字符串来配置模块的加载方式。
以下为启用此选项后 正确 的代码示例:
javascript
import x from "./bar?optionX";
import y from "./bar?optionY";preferInline
type: boolean
default: false
当设置为 true 时,对于 TypeScript 代码,优先使用内联类型导入而非单独的类型导入语句。
以下为启用此选项后 正确 的代码示例:
typescript
import { Foo, type Bar } from "./module";如何使用
可通过配置文件或 CLI 启用此规则:
json
{
"plugins": ["import"],
"rules": {
"import/no-duplicates": "error"
}
}bash
oxlint --deny import/no-duplicates --import-plugin