簡體   English   中英

Type語法-Typescript中此語法的含義是什么

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM