Какая типизация в TypeScript

Ответ

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 — это когда твой код перестаёт быть свалкой, а становится, блядь, почти что произведением искусства. Почти.