问题 #
实现向接口添加新字段的类型。类型接受三个参数。输出应该是具有新字段的对象。
type Test = { id: '1' }
type Result = AppendToObject<Test, 'value', 4> // expected to be { id: '1', value: 4 }解答 #
type AppendToObject<T extends object, U extends string, V> = {
[K in keyof T|U]: K extends keyof T ? T[K] : V
}拆分 #
- 首先利用
keyof T获取到所有的key然后和U形成联合类型 K in keyof T为新对象类型的索引K extends keyof T为判断K是否是T的索引如果不是则就是需要新添加的字段