Как Omit<T, K> растворил типы, или Что такое дистрибутивность типов в TypeScript / Денис Платонов

Денис Платонов, старший разработчик интерфейсов в Яндекс 360, поделился, как обнаружил фундаментальный подвох в недистрибутивном Omit<T, K> с union-типами. В своём докладе на Я.Субботнике по разработке интерфейсов Денис показал, как теряют автокомплит и отправляют мусор на сервер, и рассказал, как его кейс повлиял на документацию TypeScript, а также как дистрибутивность решает эту проблему.