от unknown к чему-то еще может упростить жизнь. может подтянуть типы под либу будет лучше?
any — это буквально что угодно. Функция, которая принимает что угодно и возвращает что угодно, в то же время все примитивы и все возможные объекты со всеми возможными полями. К any ты можешь обратиться как угодно и взять оттуда что угодно. Unknown — неизвестный тип. Чтобы обратиться к unknown.foo, сначала нужно явно проверить в рантайме, что у это сущности есть поле foo. Чтобы сделать unknown(), нужно явно проверить в рантайме, что это функция. В этом различие. Any позволяет делать что угодно без проверок, unknown не позволяет делать ничего, пока ты явно не проверишь, что обращение будет безопасным.
и “либа” тут ни при чём. ответ от сервера — это unknown. потому что сегодня по этому урлу бэк отдаёт массив юзеров, а завтра будет отдавать ассоциативный массив юзеров. модуль, который разрабатывает сосед по парте на js — это unknown. потому что нет аннотаций типов, статически невозможно вычислить, что будет отдавать функция someModule.getUser() — юзера, null или строку
Обсуждают сегодня