跳至内容

typescript/no-import-type-side-effects 限制

🛠️ 此规则提供自动修复。

它的作用

当 import 只有包含内联类型限定符的限定符时,强制使用顶级 import type 限定符。

为什么这不好?

--verbatimModuleSyntax 编译器选项导致 TypeScript 对 import 声明执行简单且可预测的转换。它**完全**删除了带有顶级类型限定符的 import 声明,并删除了带有内联类型限定符的所有 import 限定符。

后一种行为确实有一个潜在的令人惊讶的效果,即在某些情况下,TS 可以在运行时留下一个“副作用”import

ts
import { type A, type B } from "mod";

被编译为

ts
import {} from "mod";
// which is the same as
import "mod";

对于需要导入以产生副作用的罕见情况,这可能是可取的,但对于大多数情况,你不会希望留下不必要的副作用 import。

示例

ts
import { type A } from "mod";
import { type A as AA } from "mod";
import { type A, type B } from "mod";
import { type A as AA, type B as BB } from "mod";

参考

在 MIT 许可证下发布。