首頁  >  文章  >  web前端  >  TypeScript 冒險與類型挑戰 – Day Pick

TypeScript 冒險與類型挑戰 – Day Pick

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-10 06:26:29460瀏覽

大家好。
我正在解決類型挑戰,以更深入地研究 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。

TypeScript Adventures with type-challenges – Day Pick

T:包含所有屬性的基本型別。
U extends keyof T:指定輸出類型中包含的屬性。

關於 keyof
關於擴充

第二行,
它會建立一個新類型,僅從給定參數中提取指定的屬性。

TypeScript Adventures with type-challenges – Day Pick

關於映射類型,例如 [k in U]

如下所示,透過僅提供標題並完成 MyPick 來建立一個不包含 Todo 描述的新類型。

TypeScript Adventures with type-challenges – Day Pick

快樂編碼☀️

以上是TypeScript 冒險與類型挑戰 – Day Pick的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn