Тест · Асинхронный код и данные извне · урок 8 из 10Тест — почему типы не проверяют ответПочему TypeScript не может проверить данные, которые сервер на самом деле присылает в ответ на fetch?[A]Проверить нельзя, потому что response.json() возвращает any. Если объявить результат как unknown, tsc сверит данные с User в момент, когда они придут, и ответ без нужного поля поймают на той же строке, где его получили.[B]TypeScript проверяет ответ, но только после того, как промис завершится: await сравнивает данные с User и бросает ошибку при расхождении. Без await ответ проходит без проверки, поэтому забытый await пропускает плохие данные дальше в программу.[C]Аннотация вроде User заставляет tsc добавить в JavaScript проверку, которая бросает TypeError, как только объявленного поля не хватает. Дыра появляется лишь с any: он выводит ответ из-под этой проверки, поэтому достаточно не писать any в коде, который читает ответ.[D]Типы стираются при компиляции, и при запуске от User ничего не остаётся. response.json() возвращает Promise<any>, а тип User на результате лишь утверждает форму и на ответ не смотрит. Данные на деле остаются unknown, пока их не подтвердит проверка при запуске.← НазадДанные извнеДалее →Утверждения as и !