export interface Message { type: Type; data: Data; } export type MessageData< Msg extends Message, Type extends Msg['type'] > = Extract['data'];