Что такое структурная типизация в TypeScript и чем она отличается от номинативной типизации?
СобеседованиеСистема типов
- Структурная типизация — совместимость типов определяется по структуре (форме/набору свойств), а не по имени объявления. Два типа с одинаковой структурой совместимы, даже если объявлены раздельно.
- Номинативная типизация — совместимость по имени типа (как в Java/C#).
- В TypeScript можно имитировать номинативную типизацию через брендинг (добавление уникального поля):
type UserId = number & { readonly __brand: "UserId" }