Ответ
Классы в 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!" — и своё собачье дело тоже делает.
Вот и вся магия, ёпта. Создал шаблон — штампуй объекты, как горячие пирожки. Главное — не запутаться в этой своей объектно-ориентированной иерархии, а то можно так наследоваться, что сам от себя охуеешь.