/** * これはUnion型をIntersection型に変換できますが、ほぼハックなため推論が上手く効かないケースがあります。 * その場合もAssertTypeと組み合わせて使うことで、対応できる場合があります。 */ export type UnionToIntersection = (U extends unknown ? (k: U) => void : never) extends (k: infer I) => void ? I : never;