我想将一个对象类型映射到一个子类型,该子类型只包含值属于特定类型的键。
例如,像ExtractNumeric<T>
, where ExtractNumeric<{ str: string, num: number }>
应该等价于类型:{ num: number }
我试过这个,但它不起作用:
type ExtractNumeric<T> = { [k in keyof T]: T[k] extends number ? T[k] : never }
此代码段引发类型错误: let obj: ExtractNumeric<{ str: string, num: number }> = { num: 1 }
因为虽然str
键期望值为never
,但编译器会抱怨它的缺失。
森林海
相关分类