At times, representing the variety of types a value in #Postges (or any SQL database) can take through multiple tables can taxing, both in terms of development complexity as well as, potentially, performance.
You must just need a value to be of any of the given variants. I've set out to build a generalized mechanism for defining these.
https://yrashk.com/blog/2023/04/09/sum-types-in-postgres/