Массив одного типа записывают так:
let tags: string[] = ["js", "ts"]; let nums: number[] = [1, 2, 3];
Есть и альтернативная запись через дженерик: Array<string> — она равнозначна string[].
Если в массиве разные типы по фиксированным позициям, используют кортеж (tuple) — массив строго заданной структуры:
let point: [number, number] = [10, 20]; // координаты let pair: [string, number] = ["возраст", 30]; // подпись и значение
Доступ к элементам — по индексу, и TypeScript знает тип каждой позиции: point[0] — число. Если попытаться положить строку в point[0], будет ошибка.
Кортежи удобны там, где функция возвращает несколько значений фиксированных типов — например, как useState в React возвращает пару [значение, функция].