Narrowing (сужение типов)

Narrowing (сужение типов) - это когда переменная может перейти от менее точного типа к более точному, что позволяет писать более безопасный код, который не будет фейлится в рантайме.