Для многих языков, помимо парсера и механизма вывода типов, мы еще реализовываем Control Flow граф. Этот граф позволяет отслеживать изменения состояния программы (Data Flow Analysis), благодаря чему появляется возможность писать целый новый класс умных инспекций

Интересный факт, что реализация CF графа для TypeScript и JavaScript полностью совпадает. Потому что TypeScript не привносит никакого дополнительного поведения в Runtime
CF граф также используется для Type Guard (механизма сужения типов) в TypeScript
Чуть подробнее о том, как строится граф и как используется в TypeScript я рассказывал вот здесь:
youtube.com/watch?v=qddYQL…
Простой пример CF графа
