gpt4 book ai didi

typescript - 从接口(interface)属性创建联合类型

转载 作者:行者123 更新时间:2023-12-05 04:28:49 26 4
gpt4 key购买 nike

考虑以下接口(interface)

type State = {
data: any[]
index: number
size: number
count: number
loading: boolean
error: string | undefined
}

我需要创建一个类型,它应该是其属性的联合

{data: any[]} | {index: number} | {size: number} |...

到目前为止,我能够通过使用索引类型访问来合并所有返回类型,但我将获得接口(interface)属性返回类型的联合。

最佳答案

您需要使用 distributive-conditional-types :

type State = {
data: any[]
index: number
size: number
count: number
loading: boolean
error: string | undefined
}

type Split<T> = keyof T extends infer Keys // turn on distributivity
? (Keys extends PropertyKey
? (Keys extends keyof T
? Record<Keys, T[Keys]> // apply to each key, or { [prop in Keys]: T[Keys] }for readability
: never)
: never)
: never

// Record<"data", any[]> | Record<"index", number> | Record<"size", number> ...
type Result = Split<State>

Playground

关于typescript - 从接口(interface)属性创建联合类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72515807/

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