Название фичи: 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;

results matching ""

    No results matching ""