在TypeScript中,我有一个接口:SimpleMessage
,以及它的众多实现。该接口有一个成员type
,用于标识消息的类型。
实现看起来像这样:
class Implementation implements SimpleMessage
{
public readonly type = MessageType.Foo;
/* Other stuff */
}
我还有一个联合类型AnyMessage
,它是SimpleMessage
和所有实现的联合。如果我比较if语句中的消息类型,TypeScript可以将类型缩小到SimpleMessage | Implementation
:
/* type of message is AnyMessage */
if (message.type === MessageType.Foo)
{
/* type of message is SimpleMessage | Implementation */
}
应该注意的是,每个MessageType
只会有一个实现,并且会有一些MessageType
没有实现。
如何将类型从SimpleMessage | Implementation
缩小到Implementation
?