Продвинутый Typescript
2026-02-26 18:12 Diff

Классы в TypeScript являются одновременно значением и типом данных. Второе особенно важно в контексте типизации функций и методов, что мы и изучим в этом уроке.

Рассмотрим следующий пример:

Здесь функция isEqual() принимает два аргумента типа Point. И хоть мы используем в качестве типа класс Point, но передавать в функции мы можем любые объекты с полями x и y:

Такое поведение обусловлено структурной типизацией. При сравнении типов TypeScript сравнивает их структуру, а не имена. На практике это упрощает работу с внешними библиотеками и заглушками для тестирования.

TypeScript будет явно требовать экземпляр класса, если у него есть приватные поля:

Рекомендуемые программы