我具有带有payload
和type
属性的联合类型,从中 type
US UNIQ。我想在给出type
时推断有效载荷类型。
type AAction = {type: 'A', payload: APayload};
type BAction = {type: 'B', payload: BPayload};
type APayload = number;
type BPayload = string;
type Actions = AAction | BAction;
const actions: Actions[] = [];
type PayloadOfType<T extends Actions['type']> = ????
type PayloadOfTypeA = PayloadOfType<'A'>;
因此,目标是PayloadOfTypeA
等于APayload
(或number
(。
这是可能的吗?
您可以使用条件类型Extract
:
type AAction = {type: 'A', payload: APayload};
type BAction = {type: 'B', payload: BPayload};
type APayload = number;
type BPayload = string;
type Actions = AAction | BAction;
const actions: Actions[] = [];
type PayloadOfType<T extends Actions['type']> = Extract<Actions, { type: T }>['payload']
type PayloadOfTypeA = PayloadOfType<'A'>;