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

我想将一个对象类型映射到一个子类型,该子类型只包含值属于特定类型的键。

例如,像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,但编译器会抱怨它的缺失。


宝慕林4294392
浏览 415回答 1
1回答

森林海

简而言之:type SubType<Base, Condition> = Pick<Base, {    [Key in keyof Base]: Base[Key] extends Condition ? Key : never}[keyof Base]>;type ExtractNumeric<T> = SubType<T, number>
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript