Мы используем кодген для слоя связи с бекендом и у нас огромное количество функций в стиле
getPosts({param1: value1, …}).И вот тут нас ждала засада.
Представьте: бекенд меняет контракт, переименовывая один параметр. И, спасибо монорепе, мы сломаем CI, если типы не будут совпадать с логикой.
Но есть один нюанс. У нас могут быть Optional поля. И вот тут в колено во всю силу стреляет дак-тайпинг, потому что
{aba: 1} является подтипом {aaa?: 1}. И ты никак переименование aaa в aba не отловишь.В итоге придётся кодгенить зод схему, чтобы отловить изменения контрактов в рантайме. Так что теперь нужно писать валидаторы схем не только при получении данных, но и при их отправке(