如何使实现在TypeScript

时间:2018-02-25 08:30:56

标签: class typescript types interface

在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

0 个答案:

没有答案