Ответ
TypeScript использует статическую типизацию с возможностью вывода типов. Основные типы:
Примитивные:
let isDone: boolean = false;
let count: number = 42;
let name: string = 'Alice';
Специальные:
let u: undefined = undefined;
let n: null = null;
Объектные:
let list: number[] = [1, 2, 3];
let tuple: [string, number] = ['hello', 10];
Пользовательские:
type User = {
id: number;
name: string;
};
interface Animal {
sound(): void;
}
Особенности:
- Поддерживает union types (
string | number) - Имеет type guards и type assertions
- Позволяет использовать generics
- Поддерживает структурную типизацию (duck typing)
TypeScript проверяет типы на этапе компиляции, но в runtime типы не существуют.
Ответ 18+ 🔞
Да ты послушай, что за зверь такой TypeScript, ёпта! Это ж как JavaScript, только с мозгом, блядь. Как будто твоему пьяному другу на утро не просто похмелиться, а ещё и лекцию по философии прочитать — вроде тот же человек, но уже с мыслями, сука.
Смотри, у него там типы, как в аптеке, на любой случай:
Простые, как три копейки:
let isDone: boolean = false; // булево, ну true/false, ебать не сложно
let count: number = 42; // цифры, блядь, от минус бесконечности до плюс бесконечности, хули тут думать
let name: string = 'Alice'; // строки, то есть буквы, слова, блядь, "мама мыла раму", вот это всё
А есть специальные, типа для понтов:
let u: undefined = undefined; // это когда нихуя нет, просто нихуя, undefined
let n: null = null; // а это когда нихуя нет, но осознанно, типа "да, блядь, тут пусто, я так и задумал"
Ну и для коллекционеров:
let list: number[] = [1, 2, 3]; // массив цифр, чтоб их всех скопом, сука
let tuple: [string, number] = ['hello', 10]; // кортеж, блядь, это как парочка: первое — слово, второе — цифра, и ни хуя не перепутать!
А вот это, сука, уже для архитекторов, которые из говна и палок хотят дворец построить:
type User = { // type, блядь, объявляем свой тип, как король
id: number;
name: string;
};
interface Animal { // interface, ёпта, это как контракт, подписался — выполняй
sound(): void; // должен уметь издавать звук, а иначе ты не животное, а хуй пойми что
}
И главная фишка этого цирка — статическая проверка. Это когда ты пишешь код, а он тебе сразу: "Слышь, мудила, ты тут строку к числу прибавляешь, охуел?!" И всё это до того, как код вообще запустится. В рантайме этих типов уже нет, они как призраки — помогли построить дом и свалили.
А ещё он умеет в union types (string | number), то есть "или-или", как в столовке: или компот, или кисель. Type guards — это когда ты проверяешь, что тебе в тарелку положили, прежде чем хлебать. Generics — это как шаблон, один раз описал для всего на свете, и потом только подставляй, ленивая жопа.
И самое, блядь, охуенное — структурная типизация (duck typing). Это когда смотрят не на название типа, а на то, что внутри. Если крякает как утка и плавает как утка — значит, сука, утка, даже если в паспорте у неё написано "бобёр". Гениально и просто, как тапок по морде.
Короче, TypeScript — это когда твой код перестаёт быть свалкой, а становится, блядь, почти что произведением искусства. Почти.