vue.js Typescript:通过将函数参数传递给接口来推断类型

mefy6pfw  于 2022-12-14  发布在  Vue.js
关注(0)|答案(1)|浏览(153)

我有这样的接口为例:

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]来访问接口

rxztt3cl

rxztt3cl1#

根据https://www.typescriptlang.org/docs/handbook/2/keyof-types.html
keyof运算符接受一个对象类型,并生成其键的字符串或数字文本并集。
在本例中,keyof操作数将MyInterface的子域组合为Something | SomethingElse,这是有意义的。据我所知,这就是文档中所述的操作数的作用。
我没有keyof的经验,但对我来说,这似乎做了它的设计。

相关问题