1 article on discriminated unions.
Optional props feel flexible until they ship a runtime error to production that TypeScript should have caught at compile time. Here is the pattern I now use in every component.