typescript/no-import-type-side-effects 제한
작동 방식
import type을 상위 수준에서 사용하도록 강제하며, 해당 가져오기에서 인라인 형식 퀄리파이어를 가진 세부 사항만 포함하는 경우.
왜 문제가 될까?
--verbatimModuleSyntax 컴파일러 옵션은 타입스크립트가 가져오기 선언에 대해 간단하고 예측 가능한 트랜스파일링을 수행하게 합니다. 구체적으로, 상위 수준의 형식 퀄리파이어를 가진 가져오기 선언은 완전히 제거되며, 인라인 형식 퀄리파이어를 가진 모든 가져오기 세부 사항도 제거됩니다.
후자의 동작은 특정 경우에 런타임에서 "측면 효과" 가져오기가 남아 있을 수 있다는 잠재적인 놀라운 영향을 줍니다:
ts
import { type A, type B } from "mod";는 다음과 같이 트랜스파일됩니다:
ts
import {} from "mod";
// 이것은 다음과 동일합니다
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";이 규칙에 대한 올바른 코드 예시:
ts
import type { A } from "mod";
import type { A as AA } from "mod";
import type { A, B } from "mod";
import type { A as AA, B as BB } from "mod";사용 방법
이 규칙을 설정 파일 또는 명령줄에서 활성화하려면 다음을 사용할 수 있습니다:
json
{
"rules": {
"typescript/no-import-type-side-effects": "error"
}
}bash
oxlint --deny typescript/no-import-type-side-effects