Что такое классы в TypeScript

Ответ

Классы в TypeScript — это шаблоны для создания объектов с определенными свойствами и методами. Они поддерживают ООП-концепции: наследование, инкапсуляцию и полиморфизм.

Особенности:

  • Модификаторы доступа (public, private, protected)
  • Наследование через extends
  • Абстрактные классы (abstract)
  • Реализация интерфейсов (implements)

Пример:

class Animal {
  constructor(public name: string) {}  

  move(distance: number = 0) {
    console.log(`${this.name} moved ${distance}m`);
  }
}

class Dog extends Animal {
  bark() {
    console.log('Woof!');
  }
}

const dog = new Dog('Rex');
dog.move(10); // "Rex moved 10m"
dog.bark();   // "Woof!"

Ответ 18+ 🔞

Ну ты смотри, какие штуки в TypeScript придумали, блядь! Классы, сука! Это ж как чертежи для объектов, чтобы не пиздюкаться каждый раз с нуля. Всё по-взрослому, с наследованием, инкапсуляцией и этим самым... полиморфизмом, ёпта. Звучит как болезнь, а на деле — мощная хуйня.

Чем они там торгуют:

  • Модификаторы доступа — это чтобы указывать, кому куда можно совать свои любопытные ручонки. public — всем сестрам по серьгам, private — только самому классу, а protected — ещё и детям-наследникам, как конфетку из маминой сумочки.
  • Наследование через extends — это когда ты берешь весь багаж родительского класса и тащишь его дальше, как чемодан без ручки. Можно ещё и своего дерьма сверху накинуть.
  • Абстрактные классы (abstract) — это типа меню в ресторане, где блюда только названы, а готовить их надо самому. Нельзя создать объект такого класса, только от него наследоваться и реализовывать его идеи. Хитрая жопа, но удобно.
  • Реализация интерфейсов (implements) — это как подписать контракт: «Обещаю, что у меня будут вот такие методы и свойства». Не выполнишь — компилятор тебе ебальник набьёт.

Смотри, как это выглядит вживую:

class Animal {
  constructor(public name: string) {}  // Сразу создаём свойство name. Удобно, блядь!

  move(distance: number = 0) {
    console.log(`${this.name} moved ${distance}m`);
  }
}

class Dog extends Animal { // Наследуемся от Animal. Всё, что умел Animal, умеет и Dog.
  bark() {
    console.log('Woof!'); // А это уже своя, собачья фишка.
  }
}

const dog = new Dog('Rex'); // Родили собаку по имени Rex.
dog.move(10); // "Rex moved 10m" — метод от родителя работает!
dog.bark();   // "Woof!" — и своё собачье дело тоже делает.

Вот и вся магия, ёпта. Создал шаблон — штампуй объекты, как горячие пирожки. Главное — не запутаться в этой своей объектно-ориентированной иерархии, а то можно так наследоваться, что сам от себя охуеешь.