【问题标题】:Typescript | extract from an object T all key names with values of type K打字稿 |从对象 T 中提取具有类型 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'

我已经使用“提取”来获取字符串类型的键,不包括符号和数字,但我不知道如何继续我的需要

【问题讨论】:

    标签: javascript typescript generics typescript-generics


    【解决方案1】:
     type ExtractKeysOfValueType<T, K> = { [I in keyof T]: T[I] extends K ? I : never }[keyof T];
    

    this issuetry it的启发。这基本上首先将对象映射到键-键对象,相关值不是所需类型的键被映射到从不:

     { 1: object, s: string } -> { 1: never, s: "s" }
    

    然后取所有值的类型,导致never | "s",而never 从联合中省略,导致想要的类型。

    【讨论】:

    • ``` ExtractKeysOfValueType //"s" | "ss" | “作为” | "b" | "n" | 1 ``` 不 :-(
    • 啊,对了,keyof { a: never } 并没有像我想象的那样工作,但是类似的方法可以工作:映射到密钥本身,然后进行联合。
    猜你喜欢
    • 2022-11-13
    • 1970-01-01
    • 2021-01-22
    • 2018-05-30
    • 2020-04-19
    • 1970-01-01
    • 2019-03-13
    • 1970-01-01
    • 2022-01-12
    相关资源
    最近更新 更多