TypeScript type inference/narrowing challenge
问题 I'm currently trying to improve the types on some existing code. My code looks roughly like this: /* dispatcher.ts */ interface Message { messageType: string; } class Dispatcher<M extends Message> { on< MessageType extends M["messageType"], SubMessage extends M & { messageType: MessageType } >( messageType: MessageType, handler: (message: SubMessage) => void ): void { } } /* messages.ts */ interface AddCommentMessage { messageType: "ADD_COMMENT"; commentId: number; comment: string; userId: