我似乎无法匹配函数接受的参数类型和有效负载:
type SelectCase = {
type: 'selectCase';
}
type UpdateNotification = {
type: 'updateNotification';
payload: {
title: string;
message: string;
}
}
type Message = SelectCase | UpdateNotification;
const someFn = <TMessageType extends Message['type']>(
messageType: TMessageType,
onMessage: (
payload?: Extract<Message, { type: TMessageType }> extends {
payload: infer TPayload;
}
? TPayload
: undefined
) => void
) => {
const handleMessage = (message: Message) => {
if(message.type === messageType) {
// does not work
onMessage(message.payload);
}
}
};
这是一个简化的例子,我有20多种类型的消息.你知道为什么这不管用吗?
我try 了类型谓词和调用签名,但仍然出错.