В чем разница между модификаторами доступа public, private и protected

«В чем разница между модификаторами доступа public, private и protected» — вопрос из категории TypeScript, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

public, private и protected — это модификаторы доступа в ООП, определяющие видимость свойств и методов класса.

  • public: Доступен отовсюду (внутри класса, в наследниках и извне).
    class Animal {
      public name = 'Dog'; // Доступно везде
    }
  • private: Доступен только внутри класса, где объявлен. Не наследуется.
    class Animal {
      private secret = '123'; // Только внутри Animal
    }
  • protected: Доступен внутри класса и его наследников, но не извне.
    class Animal {
      protected age = 5; // Animal + наследники
    }

В JavaScript (до ES2022) приватность эмулируется через _ (соглашение), но с # появилась настоящая приватность. В TypeScript эти модификаторы работают на уровне типов.