打字稿 |从对象 T 中提取具有类型 K 值的所有键名
Posted
技术标签:
【中文标题】打字稿 |从对象 T 中提取具有类型 K 值的所有键名【英文标题】:Typescript | extract from an object T all key names with values of type K 【发布时间】:2020-08-12 01:30:23 【问题描述】:我有一些接口/对象
interface Example1
1: object,
2: string,
s: string,
ss: string,
as: string[],
b: boolean,
n: number
有一种方法可以只获取具有 T 类型值的字符串类型的键吗?
预期结果:
type ExtractKeysOfValueType<T extends object,K> = ... // do the magic,
ExtractKeysOfValueType<Example1,string> // 's' | 'ss'
我已经使用“提取”来获取字符串类型的键,不包括符号和数字,但我不知道如何继续我的需要
【问题讨论】:
【参考方案1】: type ExtractKeysOfValueType<T, K> = [I in keyof T]: T[I] extends K ? I : never [keyof T];
受this issue、try it的启发。这基本上首先将对象映射到键-键对象,相关值不是所需类型的键被映射到从不:
1: object, s: string -> 1: never, s: "s"
然后取所有值的类型,导致never | "s"
,而never
从联合中省略,导致想要的类型。
【讨论】:
``` ExtractKeysOfValueTypekeyof a: never
并没有像我想象的那样工作,但是类似的方法可以工作:映射到密钥本身,然后进行联合。以上是关于打字稿 |从对象 T 中提取具有类型 K 值的所有键名的主要内容,如果未能解决你的问题,请参考以下文章