Может ли тройка быть назначена для пары? Думая в категориях структурной типизации, вы можете ожидать, что это возможно. В паре есть ключи 0 и 1, так не может ли она иметь и другие тоже? Например, 2?
const triple: [number, number, number] = [1, 2, 3];
const double: [number, number] = triple;
// ~~~~~~ '[number, number, number]' не может быть назначен
// для '[number, number]'.
// Типы свойства 'length' являются несовместимыми.
// Тип '3' не может быть назначен для типа '2'.
Нет, и по весьма интересной причине. Вместо того чтобы моделировать пару чисел как {0: number, 1: number}, TypeScript моделирует ее как {0: number, 1: number, length: 2}.
Эффективный TypeScript: 62 способа улучшить код
·
Дэн Вандеркам