there is no error, why?
myTupleType.push(234);
// this is the error, why?
myTupleType[2] = 'sdfsdf';
У меня просто сбой логики какой-то
так у тебя myTupleType это Tuple
надо еще readonly сделать let myTupleType: Readonly<[number, string]>; myTupleType = [2,'3']; // there is no error, why? myTupleType.push(234); // this is the error, why? myTupleType[2] = 'sdfsdf';
вопрос не в readOnly, а в философии кортежа. Если tuple фиксирован в длине, почему к нему разрешено применять push?
скорее всего он видит что это массив и дает сделать пуш
не, ну присвоение на корректный индекс не будет противоречить философии кортежа
вот и начались догадки ,предположения. А хотелось бы четкого логичного ответа, который не будет противоречить всем правилам TS
Правила "ТС" это очень условная херня, которая от версии к версии может меняться
вышел TS4, а этот вопрос не менялся ни разу от версии к версии
декораторы тоже уже сколько времени "экспериментальная" фича)
я бы сказал что с точки зрения философии тс кортеж немного другой он больше минимальная длина + типы, чем фиксированная
тогда это противоречит тому, что мне почему то нельзя по индексу, превышающему длину кортежа, записать новое значение. TS сразу ругается на превышение длины Tuple
ну тогда значит кортеж с точки зрения тс это не философия, а просто набор правил, необязательно хорошо согласующихся между собой
Обсуждают сегодня