大家好。
我正在解決類型挑戰,以更深入地研究 TypeScript。
今天,我想分享一下我對 Pick 的了解。
interface Todo { title: string description: string completed: boolean } type TodoPreview = MyPick<Todo, 'title' | 'completed'> const todo: TodoPreview = { title: 'Clean room', completed: false, }
實現內建的 Pick 泛型而不使用它。
透過從 T 中選取屬性集 K 來構造類型。
挑戰是建立您自己的 Pick 實用程式類型版本,TypeScript 將其作為標準實用程式提供。
interface Todo { title: string; description: string; completed: boolean; } type MyPick<T, U extends keyof T> = { [k in U]: T[k]; }; type TodoPreview = MyPick<Todo, "title" | "completed">; const todo: TodoPreview = { title: "Clean room", completed: false, };
讓我逐行解釋。
在第一行,MyPick 接收兩個參數:T 和 U extends keyof T。
T:包含所有屬性的基本型別。
U extends keyof T:指定輸出類型中包含的屬性。
關於 keyof
關於擴充
第二行,
它會建立一個新類型,僅從給定參數中提取指定的屬性。
關於映射類型,例如 [k in U]
如下所示,透過僅提供標題並完成 MyPick 來建立一個不包含 Todo 描述的新類型。
快樂編碼☀️
以上是TypeScript 冒險與類型挑戰 – Day Pick的詳細內容。更多資訊請關注PHP中文網其他相關文章!