为了账号安全,请及时绑定邮箱和手机立即绑定

在 TypeScript 中按值类型排除对象键

在 TypeScript 中按值类型排除对象键

宝慕林4294392 2021-06-15 16:38:40
我想将一个对象类型映射到一个子类型,该子类型只包含值属于特定类型的键。例如,像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,但编译器会抱怨它的缺失。
查看完整描述

1 回答

?
森林海

TA贡献2011条经验 获得超2个赞

简而言之:


type SubType<Base, Condition> = Pick<Base, {

    [Key in keyof Base]: Base[Key] extends Condition ? Key : never

}[keyof Base]>;


type ExtractNumeric<T> = SubType<T, number>


查看完整回答
反对 回复 2021-06-18
  • 1 回答
  • 0 关注
  • 414 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号