Я точно знаю, что первый параметр будет fieldsParamsType, а shift ну вроде как первый параметр и выдаёт. Но ответ от шифта всё-равно будет не fieldsParamsType, а вместо него string | fieldsParamsType | undefined. Как здесь правильно затипизировать, если через as приводить не хочется?
map((params: [fieldsParamsType, string, string])=>{
const {uid: controlUid} = params.shift();
const [ first, ...rest ] = params
Не понял, как мне это может помочь. Так близко не проканывает. Тот же самый эффект получается, first типизирован как 'string | fieldsParamsType | undefined' filter(([fields])=>!!fields), map((params)=>{ const [ first ] = params; const {uid: controlUidTest} = first; const {uid: controlUid} = params.shift() as fieldsParamsType; return [ controlUid, ...params, ] }),
из кортежа нормально доставать должно, значит что-то с типом не так
Кому оно должно? Вот https://www.typescriptlang.org/play?ts=4.6.4&ssl=5&ssc=28&pln=1&pc=1#code/MYewdgzgLgBFCm0AqBXADgG3jAvDA2gIwA0MA5AFwCUZAugNwCwAUAPSsxawLQUxgoAtgCN4AJxgAfGNDEBLMAHMmzLnERQ+AkeJX4eUWrnXJ0WFaEggsAOgwhFACjIHypA1XpA const testTuple = [1, ':)']; // let test: number | string; let test: number; [test] = testTuple; console.log('test ', test); Ошибка.
const testTuple: (string | number)[] - это не кортеж а массив
const testTuple = [1, ':)'] as const;
as const - так .shift() не сработает.
я в песочнице никакого shift не вижу - скинь полный репродьюс
Спасибо.
Но с шифтом и массивом гораздо локаничнее получается. Я ж сразу из объекта беру нужный параметр. const {uid: controlUid} = params.shift() as fieldsParamsType;
Обсуждают сегодня