gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-30 21:45:19 24 4
gpt4 key购买 nike

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

例如,类似 ExtractNumeric<T> 的内容, 在哪里 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 key 期望值为 never , 编译器提示它不存在。

最佳答案

已链接 aticle在评论中,但简而言之:

type SubType<Base, Condition> = Pick<Base, {
[Key in keyof Base]: Base[Key] extends Condition ? Key : never
}[keyof Base]>;

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

关于javascript - 在 TypeScript 中按值类型排除对象键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56431150/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com