我在MessagesStore
对象中实现条件类型时遇到打字错误.以下是完整的代码设置:
type Message = { id: number; text: string };
type MessagesStore = {
queue: Array<Message>;
read: <T extends boolean>(assertiveMode?: T) => T extends true ? Message : Message | undefined;
}
const store: MessagesStore = {
queue: [],
read(assertiveMode: boolean = false) {
const message = this.queue.shift();
if (assertiveMode && message === undefined) {
throw new Error('The messages queue is empty');
}
return message;
}
}
但是,TypeScrip会引发以下错误:
Type '<T extends boolean>(assertiveMode?: boolean) => Message | undefined' is not assignable to type '<T extends boolean>(assertiveMode?: T | undefined) => T extends true ? Message : Message | undefined'.
Type 'Message | undefined' is not assignable to type 'T extends true ? Message : Message | undefined'.
Type 'undefined' is not assignable to type 'T extends true ? Message : Message | undefined'.
我很难理解为什么我会收到这个错误,以及如何解决它.