大家好。
我正在解決類型挑戰,以更深入地研究 TypeScript。
今天,我想分享一下我對Pick的了解。
interface Todo { title: string description: string completed: boolean } type TodoPreview = MyPickconst todo: TodoPreview = { title: 'Clean room', completed: false, }
實現內建的 Pick 泛型而不使用它。
透過從 T.
挑戰是創建您自己的 Pick 實用程式類型版本,TypeScript 將其作為標準實用程式提供。
interface Todo { title: string; description: string; completed: boolean; } type MyPick= { [k in U]: T[k]; }; type TodoPreview = MyPick ; 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 描述的新類型。
快樂編碼☀️
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3