我有这样的接口为例:
interface MyInterface {
a: Something;
b: SomethingElse;
}
假设我调用以下代码:
const object: MyInterface = {
a: {...},
b: {...},
}
const getValue = (key: keyof MyInterface) => {
const value: MyInterface[typeof key] = object[key];
return value;
}
const value = getValue('a');
我最终得到的是value: Something | SomethingElse
而不是value: Something
。当然,这是一个伪示例,实际上我正在解析一个可组合函数中的vuex getter中的一些数据,但有人对此有明确的答案吗?谢谢。
我尝试通过获取Interface[typeof key]
来访问接口
1条答案
按热度按时间rxztt3cl1#
根据https://www.typescriptlang.org/docs/handbook/2/keyof-types.html
keyof运算符接受一个对象类型,并生成其键的字符串或数字文本并集。
在本例中,
keyof
操作数将MyInterface
的子域组合为Something | SomethingElse
,这是有意义的。据我所知,这就是文档中所述的操作数的作用。我没有
keyof
的经验,但对我来说,这似乎做了它的设计。