gpt4 book ai didi

typescript - 获取接口(interface)成员类型的联合类型

转载 作者:搜寻专家 更新时间:2023-10-30 21:05:22 26 4
gpt4 key购买 nike

在 TypeScript 中,目前可以获取接口(interface)所有“键”的联合类型,例如:

interface foo {
name: string;
age: number;
}

function onlyTakeFooKeys(key: keyof foo) {
// do stuff with key
}

并且编译器将强制执行 onlyTakeFooKeys 只能使用 nameage 调用。

我的用例是我需要获取接口(interface)/对象成员的所有类型的联合类型。在给定的接口(interface) foo 示例中,我期待这样的事情:

some_operator foo; //=> string | number

这目前可以实现吗?

假设接口(interface)有任意数量的成员,这使得硬编码成为不可能。并且这需要在编译时完成。

最佳答案

你可以定义ValueOf<T>像这样:

type ValueOf<T> = T[keyof T]

使用 lookup types索引到 Tkeyof T .在你的情况下,你可以做 ValueOf<foo>生产string | number .

这几乎肯定已经被问过和回答过;我的搜索能力此刻正在失败。此答案与 this answer 重复,但是所陈述的问题有点不同(因为它需要使用该键的值类型来约束键)。

希望对您有所帮助。祝你好运。

关于typescript - 获取接口(interface)成员类型的联合类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49947528/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com