Какие основные типы применял в TypeScript

Ответ

TypeScript предоставляет множество встроенных типов. Основные:

  1. Примитивы: string, number, boolean
  2. Специальные: null, undefined, void, never
  3. Массивы: number[] или Array<number>
  4. Кортежи: [string, number] - фиксированный массив с разными типами
  5. Объекты: { name: string; age: number }
  6. Перечисления: enum Color { Red, Green }
  7. Any/Unknown: any (отключает проверку), unknown (типобезопасная альтернатива)
  8. Типы объединений: string | number

Пример:

let user: { name: string; age?: number } = { name: 'Alex' };
function greet(name: string): void { console.log(`Hello ${name}`); }
type ID = string | number;

Ответ 18+ 🔞

А, TypeScript, ёпта! Ну, это как если бы твой обычный JavaScript, который и так уже пиздец как хорош, вдруг решил надеть очки, галстук и начать всё по полочкам раскладывать. Типа, "чувак, я тебе помогу, а то ты опять undefined в number запихнёшь и будешь охуевать, почему всё сломалось".

Смотри, какие у него там, блядь, основные типы есть, этот зануда:

  1. Примитивы — ну, это как три кита, на которых всё держится: string (буквы всякие), number (циферки, включая дробные, ебать), boolean (ну, правда или ложь, true или false, хули тут думать).
  2. Специальные типы — это уже интереснее. null и undefined — это два брата-близнеца, которые обозначают "ничего", но по-разному, чтобы мозг выебать. void — это когда функция ничего не возвращает, типа "сделал дело — гуляй смело". А never — это вообще пиздец, тип для функций, которые никогда-никогда не закончатся (вечный цикл) или всегда выкинут ошибку.
  3. Массивы — куча чего-то одного. Можно записать как number[] (читай "массив чисел"), а можно как Array<number>. Суть одна — хуярь туда цифры, но не пытайся засунуть туда строку, а то получишь втык от компилятора.
  4. Кортежи (Tuples) — это, блядь, как зафиксированный намертво массив. [string, number] — значит, на первом месте ТОЛЬКО строка, на втором ТОЛЬКО число. Попробуй перепутать — получишь "в рот меня чих-пых" в виде ошибки.
  5. Объекты — тут всё строго: опиши, какие поля должны быть. { name: string; age: number } — значит, объект ДОЛЖЕН иметь name (строку) и age (число). Вопрос ? после age делает поле необязательным — можешь не указывать, и тебя за это не прибьют.
  6. Перечисления (Enum)enum Color { Red, Green }. Создаёт человекочитаемые константы. Вместо того чтобы писать везде магическое число 0 или 1, пишешь Color.Red. Удобно, но иногда от них больше геморроя, чем пользы, честно.
  7. Any / Unknown — вот это, блядь, интересная парочка. any — это белый флаг, капитуляция. Говоришь компилятору: "отъебись, я сам знаю, что делаю". Проверка типов отключается. Опасная штука, но иногда нужна. unknown — это any, но умный. Он говорит: "окей, я не знаю, что тут, но ты прежде чем что-то делать, проверь тип, мудак".
  8. Типы объединений (Union)string | number. Классика. Переменная может быть ИЛИ строкой, ИЛИ числом. Очень часто используется, особенно когда работаешь с каким-нибудь ебучим API, который может прислать что угодно.

Ну и примерчик, чтобы закрепить, так сказать:

// Объект с необязательным полем age. Видишь знак вопроса? Можешь его не указывать, и всё будет ок.
let user: { name: string; age?: number } = { name: 'Alex' };

// Функция, которая только делает дело (выводит в консоль) и ничего не возвращает (void).
function greet(name: string): void { console.log(`Hello ${name}`); }

// Создаём свой тип-псевдоним. ID теперь может быть либо строкой, либо числом.
type ID = string | number;

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