【问题标题】:How do I refer a value of an object as a generic in typescript?如何在打字稿中将对象的值称为泛型?
【发布时间】:2018-03-13 21:53:41
【问题描述】:

我正在尝试为这个函数写一个签名:

export function objToArray(obj){
    let ret = [];
    for(const key of Object.keys(obj)){
        ret.push(Object.assign({objKey: key.toString()}, obj[key]));
    }
    return ret;
}

因此,对于包含 U 类型值的 T 类型对象,我想返回 Array<U & {objKey: string}>。我不知道如何用打字稿来做到这一点。

【问题讨论】:

    标签: typescript typescript-typings typescript2.0


    【解决方案1】:

    您可以使用lookup typesT 类型具有 keyof T 类型的键和 T[keyof T] 类型的值。因此,您的函数将这样输入:

    export function objToArray<T>(obj: T): Array<T[keyof T] & { objKey: string }>{
        let ret = [];
        // Object.keys() returns `string[]` but we will assert as `Array<keyof T>`
        for(const key of Object.keys(obj) as Array<keyof T>){
            ret.push(Object.assign({objKey: key.toString()}, obj[key]));
        }
        return ret;
    }
    

    希望有所帮助;祝你好运!

    【讨论】:

    • 太好了,谢谢。从有关泛型的文档中,我看到了 keyof,但没有看到任何处理诸如 T[keyof T] 之类的值的示例。
    猜你喜欢
    • 2020-10-11
    • 1970-01-01
    • 2021-11-25
    • 2022-01-02
    • 2020-01-17
    • 2019-01-16
    • 2020-01-08
    • 1970-01-01
    • 2017-12-14
    相关资源
    最近更新 更多