跳至內容

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

🛠️ 此規則有自動修正功能。

作用

當 import 只有內嵌類型限定詞的 specifiers 時,強制使用頂層的 import type 限定詞。

為何這不好?

--verbatimModuleSyntax 編譯器選項會使 TypeScript 在 import 宣告上進行簡單且可預測的轉譯。也就是說,它會完全移除具有頂層類型限定詞的 import 宣告,並移除任何具有內嵌類型限定詞的 import specifier。

後者的行為確實有一個潛在令人驚訝的效果,在某些情況下,TS 會在運行時留下一個「副作用」的 import。

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

轉譯為

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

對於需要導入來產生副作用的罕見情況,這可能是理想的 - 但在大多數情況下,您不希望留下不必要的副作用導入。

範例

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 許可下發布。