【发布时间】:2021-09-08 19:12:52
【问题描述】:
消息有一个通用类型:
type Message = Message1 | Message2 | ...;
每个特定的消息类型都包含名为type 的字段,例如:
type Message1 = {
type: 'message-1',
payload1: string;
}
type Message2 = {
type: 'message-2',
payload2: number;
}
subscribe 函数应该接受两个参数:messageType 和 onMessage:
function subscribe(messageType: Message['type'], onMessage: (message: ???) => void): void {
...
}
问题是如何定义subscribe函数的第二个参数,以便onMessage回调可以推断出消息的类型。例如,
subscribe('message-1', (msg) => { /* msg should be of type Message1 */ });
【问题讨论】:
标签: typescript type-inference typescript-generics