gpt4 book ai didi

typescript - 定义联合类型的拾取键

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

给定一个接口(interface),例如:

interface A {
AA : string
AB : number
}

我想要一个类型,它是所有可能选择的类型的联合,例如:

type B = Pick<A, "AA"> | Pick<A,"AB"> 

或者,如果不熟悉 Pick:

type B = {AA: string} | {BB : number}

不过我不想像上面那样手动写出来。我希望能够编写某种通用类型或函数来为我完成它,例如

type B = OneOf<A>

如何编写“OneOf”,或者 typescript 中最接近的当前近似值/解决方法是什么?

最佳答案

这样的事情怎么样:

type OneOf<T> = {[K in keyof T]: Pick<T, K>}[keyof T];

使用该结构,您的示例将如下所示:

interface A {
AA: string;
AB: number;
}

declare var x: OneOf<A>;

// x now has type:
// Pick<A, "AA"> | Pick<A, "AB">

关于typescript - 定义联合类型的拾取键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48999715/

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