> Что такое public в TypeScript? (TypeScript)

Уровень: junior · Роль: frontend · Категория: Технические вопросы

Компании: VK

Стек: TypeScript

> Пример ответа

Короткий ответ

public в TypeScript - это модификатор доступа по умолчанию для членов класса (свойств и методов). Он означает, что к члену класса можно обращаться откуда угодно: внутри класса, из экземпляра класса, из наследников и из внешнего кода. В TypeScript все члены класса автоматически являются public, если не указан другой модификатор (private или protected).

Подробное объяснение

public - один из трёх модификаторов доступа в TypeScript, наряду с private и protected. Он обеспечивает максимальный уровень доступности. Когда свойство или метод помечены как public, они видны и доступны для использования в любом контексте: внутри самого класса, в экземплярах класса, в классах-наследниках и во внешнем коде, который имеет доступ к объекту.

В TypeScript явное указание public необязательно - это поведение по умолчанию. Однако его часто пишут для явности и читаемости кода, особенно в больших проектах или при командной разработке. Модификатор public работает только на этапе компиляции TypeScript и не влияет на сгенерированный JavaScript-код - в рантайме все члены класса остаются публичными.

На практике

На практике public используется для членов класса, которые являются частью публичного API класса. Это методы и свойства, к которым должны иметь доступ другие части приложения. Например, методы для взаимодействия с пользователем, публичные геттеры и сеттеры, методы для внешних вызовов.

Хорошей практикой считается делать по умолчанию все члены класса приватными, а затем открывать доступ только к тем, которые действительно нужны снаружи. Это принцип инкапсуляции. Если вы видите public в коде, это сигнал: "этот член класса предназначен для внешнего использования".

Пример кода

TYPESCRIPT
class User {
public name: string; // явно public
age: number; // тоже public, так как это по умолчанию
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
public greet(): string { // явно public
return `Привет, я ${this.name}`;
}
getBirthYear(): number { // public по умолчанию
return new Date().getFullYear() - this.age;
}
}
const user = new User('Анна', 25);
console.log(user.name); // ✅ доступно, так как public
console.log(user.greet()); // ✅ доступно
console.log(user.getBirthYear()); // ✅ доступно

Как отвечать на собеседовании

Начни с определения: public - модификатор доступа, делающий член класса доступным отовсюду. Упомяни, что это значение по умолчанию в TypeScript. Приведи простой пример с классом, где свойство или метод помечены public. Подчеркни, что модификатор работает только на этапе компиляции и не влияет на рантайм. Хорошо добавить про инкапсуляцию: обычно рекомендуется начинать с private и открывать доступ только к необходимому. Если спросят про отличие от private и protected, кратко объясни: private - только внутри класса, protected - внутри класса и наследников.

Что проверяет интервьюер

Интервьюер проверяет базовое понимание системы модификаторов доступа в TypeScript. Он хочет убедиться, что кандидат знает, что такое public, как он работает и чем отличается от других модификаторов. Также проверяется понимание того, что модификаторы - это синтаксический сахар TypeScript, который не влияет на скомпилированный JavaScript. Важно показать знание принципов инкапсуляции и умение объяснить, когда использовать public, а когда - другие модификаторы.

Типичные ошибки

  • Путаница с public в JavaScript: в JS нет модификаторов доступа, все члены класса публичны по умолчанию. TypeScript добавляет эту возможность на уровне типов.
  • Думать, что public нужно писать всегда - это избыточно, так как поведение по умолчанию уже публичное.
  • Считать, что public влияет на производительность или безопасность в рантайме - это не так, он работает только на этапе компиляции.
  • Неправильное понимание области видимости: public не делает член класса глобальным, он доступен только через экземпляр класса.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью