타입스크립트에서 Union으로 묶어놓은 타입 중 특정 타입을 골라서 사용하고 싶어서 찾아보았다
type Add = {
type: 'add';
id: string;
value: string;
};
type Remove = {
type: 'remove';
id: string;
};
type Multiply = {
type: 'multiply';
id: string;
value: number;
};
type Action = Add | Remove | Multiply;
export type ExtractOneFromAction<T extends Action> = Extract<T, { type: T['type'] }>;
const add: ExtractOneFromAction<Add> = {
type: 'add',
id: '1',
value: '2',
};
type T0 = Extract<"a" | "b" | "c", "a" | "f">;
// type T0 = "a"
type T1 = Extract<string | number | (() => void), Function>;
// type T1 = () => void