기준 타입
`T extends U`에서 비교할 형태를 먼저 고정합니다.
conditional type
타입 분기는 조건, 참 결과, 거짓 결과, 추론 위치를 분리하면 내장 유틸리티처럼 읽기 쉬워집니다.
`T extends U`에서 비교할 형태를 먼저 고정합니다.
조건을 만족할 때 남길 타입이나 추출할 타입을 적습니다.
조건 밖의 값은 원본 유지, 제거, fallback 중 하나로 정합니다.
함수 반환, 배열 요소, Promise 내부처럼 뽑을 자리를 표시합니다.
유니온에 바로 적용하면 각 멤버에 따로 분기됩니다.
분산을 막고 싶으면 `[T] extends [U]` 형태로 비교합니다.
`any`보다 `never`나 원본 타입을 쓰면 실패 경로가 선명합니다.