将两个类型合并成一个类型,第二个类型的键会覆盖第一个类型的键
例如:
type foo = {
name: string;
age: string;
}
type coo = {
age: number;
sex: string
}
type Result = Merge<foo, coo>; // expected to be {name: string, age: number, sex: string}
答案
// 答案 1 type Merge<F, S> = { [K in keyof F | keyof S]: K extends keyof S ? S[K] : K extends keyof F ? F[K] : never } // 答案 2 type Flatten<T> = { [K in keyof T]: T[K] } type Merge<F, S> = Flatten<Omit<F, keyof S> & S>