TypeScript - Модификаторы доступа: Ваш доброжелательный гид по конфиденциальности кода

Здравствуйте, будущая звезда программирования! ? Я рад стать вашим проводником в этом захватывающем путешествии через модификаторы доступа TypeScript. Как кто-то, кто teaches programming на протяжении многих лет, я могу сказать, что понимание этих концепций похоже на изучение тайных рукопожатий мира программирования. Так что давайте окунемся и вместе откроем эти тайны!

TypeScript - Access Modifiers

Что такое модификаторы доступа?

Прежде чем мы перейдем к деталям, давайте поговорим о том, что такое модификаторы доступа. Представьте, что вы строите суперкрутую 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. Запомните:

  1. public для всех (как общественный парк)
  2. private только для класса (как ваш личный дневник)
  3. protected для класса и его детей (как семейные секреты)

Использование этих модификаторов wisely поможет вам создать более secure, organized и maintainable код. Это как быть супергероем программирования – вы знаете, когда делиться своими силами и когда держать их в секрете!

Пока вы практикуетесь с этими концепциями, представьте, что вы проектируете свою собственную команду супергероев. Кто что знает? Как вы поддерживаете баланс между командной работой и secret identities? Это весело – вы принимаете эти захватывающие решения!

Продолжайте программировать, продолжайте учиться, и помните: с великой силой приходит великая ответственность... и真的很 классные классы TypeScript! ??‍♂️?‍♀️

Credits: Image by storyset