Какую типизацию имеет TypeScript?
Основы TypeScript
У TypeScript статическая, структурная и постепенная типизация с выводом типов.
Свойства
- Статическая — типы проверяются при компиляции, а не во время работы.
- Структурная — совместимость определяется формой объекта, а не именем типа:
interface Point { x: number; y: number }
const p = { x: 1, y: 2 };
const point: Point = p; // ок, хотя p не объявлен как Point- Постепенная (gradual) — можно оставлять части кода без типов (
any) и добавлять их по мере миграции. - С выводом типов — компилятор сам определяет типы переменных и возвращаемых значений.
- Сильная, но не абсолютная —
any,asи неточные типы библиотек позволяют обойти проверки.
Сравнение
В отличие от Java и C#, где типизация номинальная (важно имя класса), в TS два разных интерфейса с одинаковой формой взаимозаменяемы.
Коротко для собеседования
Статическая структурная постепенная типизация с выводом типов; типы стираются при компиляции.
Подробнее: TypeScript Handbook — Type Compatibility