Write safer TS with branded types
How it really works under the hood
Structural subtyping with the "Protocol" type