[英]Type syntax - What's the meaning of this syntax in Typescript
我是Typescript的新手。 我不明白這種語法的含義; 有人可以向我解釋嗎?
type Type1<K> = K extends string ? { [P in K]: string } : never;
如果類型K擴展字符串,那么類型1將是字符串數組的文檔嗎? 就像是:
{"x": ["a", "b", "c"],
"z": ["d", "e", "f"]
//etc
}
Or
{"x": "a",
"z": "b"
//etc
}
首先來看一下{ [P in K]: string }
這是一個映射類型。 如果K
是字符串文字類型的並集(例如: 'a' | 'b'
),則此類型的結果將是一個以這些名稱作為鍵的string
類型的對象類型(所以{ a: string, b: string }
)。 這實際上等效於預定義的Record
類型。
K extends string ? ... : never
K extends string ? ... : never
不是分配條件類型 。 這意味着,如果K
為聯合類型,則將采用聯合的每個成員並將其放入映射類型。 因此,例如:
type ex = Type1<'a' | 'b'> =>
('a' extends string ? { [P in 'a']: string } : never) | ('b' extends string ? { [P in 'b']: string } : never) =>
({ [P in 'a']: string }) | ({ [P in 'b']: string }) =>
{ a: string } | { b: string }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.