【发布时间】: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