I am hooked on intersection types in Typescript. It is like mixin heaven.
I have a WithId type I use alot that I can tack on to any Firebase record type.
If I had the motivation I could write a generic firebase getter that returns documents as a “T & WithId” (means type T with an additional id:string field)
It decreases the number of types you need to define for one. And lets you lego up various interfaces.