In this tutorial we have a look at three forms of type narrowing in Typescript Source: https://www.codementor.io/davidsilvasanmartin/typescript-discriminated-unions-1jhqp24mvx