UnionToIntersection
type UnionToIntersection<T> = (
T extends unknown ? (x: T) => void : never
) extends (x: infer R) => void
? R
: never;type Format320 = { urls: { format320p: string } };
type Format480 = { urls: { format480p: string } };
type Format720 = { urls: { format720p: string } };
type Format1080 = { urls: { format1080p: string } };
type Video = Format320 | Format480 | Format720 | Format1080;
const video1: Video = {
urls: {
format320p: "https://...",
},
}; // ✅
const video2: Video = {
urls: {
format320p: "https://...",
format480p: "https://...",
},
}; // ✅
const video3: Video = {
urls: {
format1080p: "https://...",
},
}; // ✅
// never
type FormatKeys = keyof Video["urls"];Naked 타입
반변 (Contravariant)
정리
참고 자료
Last updated