Sos*_*h89 6 javascript generics typescript typescript-generics
我有一些接口/对象
interface Example1 {
1: object,
2: string,
s: string,
ss: string,
as: string[],
b: boolean,
n: number
}
Run Code Online (Sandbox Code Playgroud)
有没有办法只获取具有 T 类型值的 string 类型的键?
预期结果:
type ExtractKeysOfValueType<T extends object,K> = ... // do the magic,
ExtractKeysOfValueType<Example1,string> // 's' | 'ss'
Run Code Online (Sandbox Code Playgroud)
我已经使用“Extract”来获取字符串类型的键,不包括符号和数字,但我不知道如何继续满足我的需求
type ExtractKeysOfValueType<T, K> = { [I in keyof T]: T[I] extends K ? I : never }[keyof T];
Run Code Online (Sandbox Code Playgroud)
受到这个问题的启发,尝试一下。这基本上首先将对象映射到键-键对象,并且相关值不是所需类型的键被映射到从不:
{ 1: object, s: string } -> { 1: never, s: "s" }
Run Code Online (Sandbox Code Playgroud)
然后获取所有值的类型,得到never | "s",并never从联合中省略,得到所需的类型。
| 归档时间: |
|
| 查看次数: |
3783 次 |
| 最近记录: |