Система типов как инструмент мышления: union, narrowing и дискриминируемые объединения в TypeScript — $ sudo teach IT