Ответ
TypeScript поддерживает несколько парадигм программирования:
- ООП (Объектно-ориентированное)
Классы, интерфейсы, наследование, инкапсуляция, полиморфизм.
class Animal {
constructor(public name: string) {}
move(distance: number) {
console.log(`${this.name} moved ${distance}m`);
}
}
- Функциональное программирование
Чистые функции, иммутабельность, функции высшего порядка.
const add = (a: number, b: number): number => a + b;
const numbers = [1, 2, 3].map(x => x * 2);
-
Процедурное программирование
Последовательные операции, функции без состояния. -
Реактивное программирование
Работа с потоками данных (RxJS). -
Generic-программирование
Обобщённые типы для создания гибких компонентов.
function identity<T>(arg: T): T {
return arg;
} Ответ 18+ 🔞
Да ты посмотри, на что этот TypeScript способен! Прямо как швейцарский нож, только для мозга, блядь. Сидит такой разработчик и думает: "В какую сторону сегодня ебашить?" А вариантов — овердохуища!
Вот, например, ООП — классика жанра, ебать мои старые костыли. Всё по-взрослому: классы, интерфейсы, наследование. Чувак создаёт Animal, а потом от него Dog и Cat плодит. Красота, блядь!
class Animal {
constructor(public name: string) {}
move(distance: number) {
console.log(`${this.name} moved ${distance}m`);
}
}
А потом приходит хипстер с бородой и говорит: "Не, это всё хуйня, давай по-функциональному!" И начинается Функциональное программирование. Чистые функции, никаких побочных эффектов, всё иммутабельно. map, reduce, filter — святая троица, блядь. Написал const add = (a, b) => a + b и чувствуешь себя богом лямбда-исчислений, ёпта.
const add = (a: number, b: number): number => a + b;
const numbers = [1, 2, 3].map(x => x * 2);
А если ты консерватор и любишь по старинке — всегда пожалуйста, Процедурное программирование. Просто пишешь функции одну за другой, как в девяностых, и не паришься. Никаких тебе монад, просто последовательность действий, в рот меня чих-пых.
Но это ещё не всё! Захочешь асинхронщины и потоков — добро пожаловать в Реактивное программирование. Подключаешь RxJS и начинаешь Observable-ы строчить. Данные текут рекой, ты их преобразуешь, фильтруешь, объединяешь. Голова кругом, но зато мощно, блядь.
И вишенка на торте — Generic-программирование. Это когда ты пишешь код, который нихуя не знает о типах, но работает с любыми, ёперный театр! Создаёшь функцию identity, которая просто возвращает то, что получила, но с дженериками это выглядит как магия.
function identity<T>(arg: T): T {
return arg;
}
Вот и получается, что TypeScript — это такая мартышлюшка универсальная. Хочешь — объекты создавай, хочешь — функциями кидайся, а хочешь — всё вместе смешай. Главное — типы не проеби, а то компилятор тебя так отхуярит, мало не покажется.