Type Alias WebhookChange

WebhookChange:
    | AccountStateChange
    | MessageChange
    | CommentChange
    | IntegrationErrorChange
    | UnknownWebhookChange

Un cambio de los que llegan en el array.

Se discrimina por field. Ojo con el switch: como UnknownWebhookChange declara field: string, TypeScript no lo puede descartar de una rama concreta, así que un case te deja CommentChange | UnknownWebhookChange. Para estrechar de verdad están los predicados isCommentChange y compañía, que es la forma recomendada.