Название фичи: Tuple
Описание:
Тип Tuple дает вам возможность объявить массив с известным фиксированным количеством элементов, которые не обязаны быть одного типа.
Аналог в c# / js: Tuple<T1, T2, T3, ...> / object[]
Решаемая проблема:
Разработчику необходимо объявить массив с известным фиксированным количеством элементов разных типов.
Пример возникновения:
Вы хотите объявить массив как пару "строка" и "число", и гарантировать, что в первом элементе будет именно строка, а во втором число.
Пример проблемы на JavaScript:
let x;
// Инициализация
x = ['hello', 10];
console.log(x[0].trim()); // Работает
console.log(x[1].toFixed(2)); // Работает
// Некорректная инициализация
x = [10, 'hello'];
console.log(x[0].trim()); // Падает в runtime: trim is not a function
console.log(x[1].toFixed(2)); // Падает в runtime: toFixed is not a function
Как решить проблему:
Объявить массив с помощью типа tuple
Пример решения на TypeScript:
// Объявление типа tuple
let x: [string, number];
// Инициализация
x = ['hello', 10];
console.log(x[0].trim());
console.log(x[1].toFixed(2));
// Некорректная инициализация
x = [10, 'hello']; // выведет ошибку во время компиляции
console.log(x[0].trim());
console.log(x[1].toFixed(2));
Синтаксис:
let x: [string, number];
let y: [IFoo, number, string | number];
Перекомпилированный в JS код:
let x;
let y;