type GetUnionKeys<Unoin> = Unoin extends any
? {
[key in keyof Unoin]: key;
} extends {
[key in keyof Unoin]: infer K;
}
? K
: never
: never;
type UnionToInterByKeys<Union, Keys extends string | number | symbol> = {
[key in Keys]: Union extends any
? {
[k in keyof Union]: k extends key ? Union[k] : never;
} extends {
[k in keyof Union]: infer P;
}
? P
: never
: never;
};
type UnionToInter<Unoin> = UnionToInterByKeys<Unoin, GetUnionKeys<Unoin>>;
// 使用
type A = {a:string}
type B = {a:number}
type C = UnionToInter<A|B> => {a:string|number}
Typescript从联合类型转化到交叉合并后的对象类型
最新推荐文章于 2024-07-24 10:40:52 发布