Learn how a shared literal property lets TypeScript narrow union types inside a switch.
Given `type Shape = { kind: 'circle'; radius: number } | { kind: 'square'; side: number }`, which approach lets TypeScript correctly narrow `shape` so you can safely access `radius` or `side`?