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";