гарантирует, что вот в этом конкретном случае вернётся только нужный и потому кастует к нему, сужая тип. Не надо так. Сегодня ты гарантируешь, а завтра меняются входные условия и вот она потенциальная проблема в ближайшем будущем. Не нужно мешать статическому анализатору делать его работу. Если функция говорит, что возвращает широкий тип, то мы обязательно должны это учитывать (либо сделать другую функцию, SIP тоже вещь полезная).
Потому только тайпгарды, или проверки через `in`с корректным обработчиком негативного сценария. И никаких as.