gpt4 book ai didi

TypeScript 动态联合

转载 作者:行者123 更新时间:2023-12-02 19:10:27 24 4
gpt4 key购买 nike

我正在尝试创建一个类型“helper”,它将转换为一个联合,也许最好通过以下代码片段来表达:

type emailResponse = {
email: string
}
NetworkActions<"EMAIL", emailResponse>
// translating to a union
{type: 'EMAIL_LOADING'} | {type: 'EMAIL_SUCCESS', payload: emailResponse} | {type: 'EMAIL_ERROR'}

第一个类型变量需要用作联合的三种类型的前缀。第二类型变量需要向下传递给联合体的第二类型。

这可以用 TypeScript 实现吗?怎么办?

最佳答案

虽然目前还不可能,但在 Typescript 4.1 发布时(2020 年 11 月)很快就会成为可能。

type emailResponse = {
email: string
}
type NetworkActions<P extends string, T> =
| { type: `${P}_LOADING` }
| { type: `${P}_ERROR` }
| { type: `${P}_SUCCESS`, payload: T }

type R = NetworkActions<"EMAIL", emailResponse>

Playground Link

更多详细信息请参阅 PR

关于TypeScript 动态联合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64375576/

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