Your types cannot hide from the wizard #3
- 외부 라이브러리에서 가져온
Set 타입(RO set) 내부의 요소 타입(admin | user | guest)을 추출하는 것이 목표입니다. 🎯
- 초기에는
Parameters<typeof RO_set.has>[0]와 같이 has 메서드의 파라미터 타입을 추출하는 "못생긴" 방법이 있었지만, 이는 재사용성이 떨어집니다. 🤢
- 더 우아하고 재사용 가능한 방법은 제네릭 조건부 타입과
infer 키워드를 활용하는 것입니다. ✨
GetTypeFromSet<T>와 같은 제네릭 타입을 선언하고, T extends Set<infer U> ? U : never와 같은 조건부 타입을 사용하여 Set 내부의 타입 파라미터 U를 추론합니다. 🕵️♀️
infer 키워드는 오직 조건부 타입의 extends 절 내에서만 작동하며, 다른 상황에서는 사용할 수 없습니다. 💡
- 이 기술을 통해
RO set을 admin | user | guest와 같은 깔끔한 유니온 타입으로 성공적으로 변환할 수 있습니다. ✅
- 이
infer를 사용한 조건부 타입 패턴은 다른 제네릭 타입의 내부 타입 파라미터를 추출하는 데 널리 활용될 수 있는 강력한 기법입니다. 🛠️
데브허브 | DEVHUB | Your types cannot hide from the wizard #3