跳至主要内容

Typescript_使用 Extract 提取 Union 聯合型別

要聲明一個變量可以屬於多個允許的型別時,可以使用 Union。

let aaa: number | string

a = 20
a = 'Elsen'

// 正確

Extract 選擇 Union 型別

僅提取類型是非常簡單的。

type Add = {
type: 'add';
id: string;
value: string;
}

type Remove = {
type: 'remove';
id: string;
}

type Action = Add | Remove;

type addType = Extract<Action, {type: 'add'}>;

你可以創建一個映射型別來自動為 union 的每個元素執行此操作。

type OfUnion<T extends {type: string}> = {
[P in T['type']]: Extract<T, {type: P}>
}

這篇筆記解釋了如何在 TypeScript 中使用聯合型別,以及如何使用 Extract 工具類型從聯合型別中提取特定的型別。這對於根據某些屬性過濾聯合型別的成員非常有用。

參考資料

https://stackoverflow.com/questions/64527150/in-typescript-how-to-select-a-type-from-a-union-using-a-literal-type-property