Видеоуроки, интерактивный редактор и сохранение прогресса — бесплатно, сразу после входа.
ВойтиСоздать аккаунт — бесплатноЗакончили урок?
Войдите, чтобы отмечать прогресс
Тестов здесь два, и они проверяют разное: один сравнивает тип результата с number, второй убеждается, что getAge() действительно возвращает 25. Второй тест не даст «починить» ошибку, поменяв return 25 на return "25".
Ошибка появляется в правильном месте. Без неё тип выводится из return, и функция всегда «права»:
С аннотацией : number опечатка подсвечивается прямо в теле функции.
return: аннотация не даст одной ветке вернуть не то, что остальные.async function load(): Promise<User> фиксирует, что именно окажется внутри промиса.Внутри маленьких локальных функций аннотацию обычно опускают, вывод справляется сам.
Теперь age тоже имеет тип number, потому что тип константы выводится из результата вызова. Вся цепочка стала честной: сигнатура совпадает с телом, а тип значения совпадает с тем, что реально придёт в рантайме.