TypeScript - Модификаторы доступа: Ваш доброжелательный гид по конфиденциальности кода
Здравствуйте, будущая звезда программирования! ? Я рад стать вашим проводником в этом захватывающем путешествии через модификаторы доступа TypeScript. Как кто-то, кто teaches programming на протяжении многих лет, я могу сказать, что понимание этих концепций похоже на изучение тайных рукопожатий мира программирования. Так что давайте окунемся и вместе откроем эти тайны!
Что такое модификаторы доступа?
Прежде чем мы перейдем к деталям, давайте поговорим о том, что такое модификаторы доступа. Представьте, что вы строите суперкрутую treehouse (это наш код!). Модификаторы доступа resemble правила, которые вы устанавливаете для того, кто может взобраться наверх, кто может заглянуть внутрь и кто имеет доступ к тайным отделениям. Они помогают нам контролировать, как части нашего кода могут быть доступны и использованы.
В TypeScript у нас есть три основных модификатора доступа:
Модификатор | Описание |
---|---|
public | Доступен из anywhere |
private | Доступен только внутри того же класса |
protected | Доступен внутри класса и его подклассов |
Теперь давайте рассмотрим каждый из них подробнее!
Модификатор доступа public
Модификатор public
resembles оставление двери вашего treehouse широко открытой.任何人都可以进来, использовать качели или одолжить ваши комиксы. В терминах кода это означает, что любая часть вашей программы может доступа и использовать эти элементы.
Вот fun пример:
class Superhero {
public name: string;
public power: string;
constructor(name: string, power: string) {
this.name = name;
this.power = power;
}
public usePower() {
console.log(`${this.name} использует ${this.power}!`);
}
}
const spiderman = new Superhero("Spider-Man", "plетение паутины");
console.log(spiderman.name); // Вывод: Spider-Man
spiderman.usePower(); // Вывод: Spider-Man использует plетение паутины!
В этом примере name
, power
и usePower()
все public. Мы можем доступа и использовать их из anywhere в нашем коде. Это как Spider-Man, летающий свободно по городу!
Модификатор доступа private
Теперь давайте поговорим о private
. Это как если бы у вас был secret diary в вашем treehouse, который может читать только вы. В TypeScript private
члены могут быть доступны только внутри того же класса.
Давайте обновим наш класс Superhero:
class Superhero {
public name: string;
private secretIdentity: string;
constructor(name: string, secretIdentity: string) {
this.name = name;
this.secretIdentity = secretIdentity;
}
private changeClothes() {
console.log("Быстрая смена в телефонной будке!");
}
public goOnMission() {
this.changeClothes();
console.log(`${this.name} готов к действию!`);
}
}
const superman = new Superhero("Superman", "Clark Kent");
console.log(superman.name); // Вывод: Superman
// console.log(superman.secretIdentity); // Ошибка! secretIdentity private
// superman.changeClothes(); // Ошибка! changeClothes() private
superman.goOnMission(); // Это работает! Вывод: Быстрая смена в телефонной будке! Superman готов к действию!
Смотрите, как мы не можем доступа secretIdentity
или вызвать changeClothes()
напрямую? Это сила private
! Она сохраняет секреты Superman в безопасности.
Модификатор доступа protected
Last but not least, у нас есть protected
. Представьте это как особое правило treehouse, которое applies к вам и вашим братьям и сестрам, но не к детям из neighborhood. В TypeScript protected
члены доступны внутри класса и его подклассов.
Давайте создадим семью Superhero:
class Superhero {
public name: string;
protected superpower: string;
constructor(name: string, superpower: string) {
this.name = name;
this.superpower = superpower;
}
protected useSuperpowerInternal() {
console.log(`Использование ${this.superpower} внутри`);
}
}
class Sidekick extends Superhero {
public useSuperheroPower() {
console.log(`${this.name} одалживает силу: ${this.superpower}`);
this.useSuperpowerInternal();
}
}
const batman = new Superhero("Batman", "гаджеты");
const robin = new Sidekick("Robin", "акробатика");
// console.log(batman.superpower); // Ошибка! superpower protected
// batman.useSuperpowerInternal(); // Ошибка! useSuperpowerInternal() protected
robin.useSuperheroPower(); // Это работает! Вывод: Robin одалживает силу: акробатика Использование акробатика внутри
Здесь Sidekick
может доступа protected
члены Superhero
, но мы не можем доступа их напрямую из outside классов.
Заключение
И вот мы рассмотрели тайный мир модификаторов доступа TypeScript. Запомните:
-
public
для всех (как общественный парк) -
private
только для класса (как ваш личный дневник) -
protected
для класса и его детей (как семейные секреты)
Использование этих модификаторов wisely поможет вам создать более secure, organized и maintainable код. Это как быть супергероем программирования – вы знаете, когда делиться своими силами и когда держать их в секрете!
Пока вы практикуетесь с этими концепциями, представьте, что вы проектируете свою собственную команду супергероев. Кто что знает? Как вы поддерживаете баланс между командной работой и secret identities? Это весело – вы принимаете эти захватывающие решения!
Продолжайте программировать, продолжайте учиться, и помните: с великой силой приходит великая ответственность... и真的很 классные классы TypeScript! ??♂️?♀️
Credits: Image by storyset