我有一些接口/对象
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'
我已经使用“提取”来获取字符串类型的键,但不包括符号和数字,但是我不知道该如何满足我的需求
答案 0 :(得分:2)
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
,从而得到所需的类型。