typescript - 從介面屬性建立聯合型別
考慮以下介面
type State = {
data: any[]
index: number
size: number
count: number
loading: boolean
error: string | undefined
}
我需要創建一種類型,它是其屬性的聯集,應該像
{data: any[]} | {index: number} | {size: number} |...
到目前為止,我能夠透過使用索引型別存取來合併所有的返回類型,但我會得到介面屬性返回類型的聯合型別。
答案#1
你需要使用分配條件型別:
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>
遊樂場
