Объяснение
TypeScript проверяет программу до исполнения, но стирает типы при компиляции. Narrowing уточняет тип после проверки. Type assertion не преобразует данные и не валидирует JSON.
Задача для самостоятельного решения
Сделает ли response as User неверный JSON корректным User?
Показать разбор ответа
Нет. Проверяйте поля и типы во время исполнения; затем возвращайте подтверждённую структуру. Assertion лишь сообщает компилятору предположение автора.