= U extends infer L | infer R ? L & R : U;
Не работает.
Работает только так:
type UnionToIntersection<U> = (U extends any ? (k: U) => void: never) extends (k: infer Q) => void ? Q : never;
Кстати вот почему это так работает 🤯
Для понимания, почему не работает первый вариант, предлагаю исследовать поведение следующих двух типов: type MaybeTakeUnionLeft<U> = U extends (infer L | infer R) ? L : never; type MaybeTakeUnionRight<U> = U extends (infer L | infer R) ? R : never;
да я понимаю, почему(интуитивно, объяснить не могу)
как раз читаю статью про тоже самое https://fettblog.eu/typescript-union-to-intersection/
Обсуждают сегодня