https://medium.com/@gustavo_mm/how-to-make-a-dynamic-typed-component-using-react-and-typescript-discriminated-unions-14d689b2d52c