面试题答案
一键面试type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never;
function handleData(data: {id: string} | {name: string} | {email: string}) {
const newData = {} as UnionToIntersection<{id: string} | {name: string} | {email: string}>;
if ('id' in data) {
newData.id = data.id;
}
if ('name' in data) {
newData.name = data.name.toUpperCase();
}
if ('email' in data) {
newData.email = data.email + '@example.com';
}
return newData;
}