Сайт использует сервис веб-аналитики Яндекс Метрика с помощью технологии «cookie». Пользуясь сайтом, вы даете согласие на использование данной технологии.
💡 Номинальная и структурная типизация, инкапсуляция, сокрытие — ООП и типы в JavaScript / TypeScript
👉 ▫️ Nominal Typing - совместимость и эквивалентность типов/классов/интерфейсов по имени в том числе и через наследование. User { name: string } ≠ Department { name: string } ▫️ Structural Typing - совместимость типов определяется структурой или формой (соответствием полей и методов как в JS/TS). User { name: string } ≡ Department { name: string } ▫️ Encapsulation - объединение данных и поведения в одну абстракцию (на синтаксисе классов, прототипов, замыканий). Counter { value, inc() } ▫️ Hiding - ограничение видимости внутреннего состояния и деталей реализации из внешнего кода. Counter { #value, inc(), get value() } ▫️ Structural Composition - создание сложных объектов путем создания простых в конструкторах и записи ссылкок в поля, с дальнейшим делегированием. Car { engine: Engine, wheels: Wheels[] } ▫️ Aggregation - слабая форма композиции, при которой содержащиеся объекты могут существовать независимо от контейнера. AggregateError { errors: [Error, Error, Error] } ▫️ Delegation - абстракция передает ответственность за поведение своему скомпозированному структурному компоненту. Semaphore { #counter: Counter, get count(), enter(), leave() } 👉 Code snippets: