모듈 타입 탐색과 전역 포함을 나눠 본다

같은 @types라도 import의 타입을 찾는 일과 전역 이름을 넣는 일은 진단 경로가 다르다.

import "foo"

모듈의 export 모양을 찾는다

1 PKG exports types 조건·types 진입점
2 @TYPES @types/foo
3 LOCAL 직접 .d.ts로 specifier·export 복제
전역 이름

보이는 타입 패키지의 범위를 고른다

DEFAULT 가시적 @types 루트
ROOTS typeRoots가 후보 루트를 교체
NAMES types가 포함 이름을 제한
404

모듈 선언을 못 찾음

--traceResolution으로 specifier·패키지 진입점·설치 위치를 확인한다.

GLOBAL

전역 이름이 사라짐

types 목록과 typeRoots가 필요한 패키지를 제외했는지 본다.

DUP

식별자가 중복됨

전역 선언 패키지·lib·중복 버전이 같은 이름을 합치는지 추적한다.

RUN

타입은 맞고 실행이 깨짐

라이브러리 버전과 선언의 export 모양을 맞춘다. 선언은 코드를 설치하지 않는다.

경계 기억 types는 import 가능한 모듈 타입 자체를 막지 않고 전역 포함만 제한한다. @types 버전은 실제 라이브러리 API와 함께 검증한다.