实现一个为接口添加一个新字段的类型。该类型接收三个参数,返回带有新字段的接口类型
例如:
type Test = { id: '1' }
type Result = AppendToObject<Test, 'value', 4> // expected to be { id: '1', value: 4 }
答案
// 答案 1 type AppendToObject<T, U extends keyof any, V> = { [K in keyof T | U]: K extends keyof T ? T[K]: V } // 答案 2 type Flatten<T> = { [K in keyof T]: T[K] } type AppendToObject<T, U extends string, V> = Flatten<T & { [key in U]: V }>