【问题标题】:Get property of interface object获取接口对象的属性
【发布时间】:2021-07-10 22:16:36
【问题描述】:

在我正在处理的 Typescript 项目中,我有以下接口:

interface Credentials {
    google?: string,
    facebook?: string,
}

export interface Configuration {
    credentials: Credentials;
}

在另一个类中,我试图根据给定的字符串获取凭据的属性之一的值:

export default class Authorize {

    _config : Configuration;

    constructor(config?: Configuration) {
        this._config = config;
    }

    authorize(provider : string) {
        const test = getProperty(this._config.credentials, provider);
        console.log(test);
    }
}

getProperty 在哪里:

export function getProperty<T, K extends keyof T>(obj: T, key: K) {
    console.log(typeof key);
    return obj[key];
}

很遗憾,这是不可能的,因为 getProperty 会报错:

TS2345:“字符串”类型的参数不可分配给 输入'keyof Credentials'。

有没有其他方法可以通过字符串获取 Credentials 对象的属性?

【问题讨论】:

    标签: javascript typescript vue.js


    【解决方案1】:

    我通过将[key: string] : any, 添加到凭据界面来修复它。

    所以最终的界面是这样的:

    interface Credentials {
        [key: string] : any,
        google?: string,
        facebook?: string,
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-25
      • 1970-01-01
      相关资源
      最近更新 更多