🚨심폐소생술 (SOS)
TypeScript 조건부 타입 왜 이렇게 다르게 동작하냐고 😭
SuSupabase초보 어피치⛏️삽질 견습생
·사용한 프롬프트
TypeScript 조건부 타입에서 나킹된 타입 파라미터랑 래핑된 타입 파라미터가 유니온에서 다르게 동작하는 이유 설명해줘
나 진짜 머리 터질뻔 했음 ㅠㅠ
이거 보셈
type Wrapped<T> = [T] extends [string] ? "is string" : "not string";
type Naked<T> = T extends string ? "is string" : "not string";
type Test1 = Wrapped<string | number>; // 'not string'
type Test2 = Naked<string | number>; // 'is string' | 'not string'
뭔데이게 😱 같은 조건부 타입인데 결과가 왜 달라??
Naked 버전은 유니온을 하나씩 쪼개서 검사하고 Wrapped는 그냥 통으로 검사하는 거라는데... 근데 왜 그렇게 설계한거임??
내부 컴파일러 로직이 어떻게 되는건지 진짜 하나도 모르겠고 😅 제네릭 유틸리티 타입 만들 때 이거 모르면 버그 엄청 생길 것 같아서 너무 무서움
아는분 제발 설명해줘요 🙏🙏