TypeScript ругается на 'initialValue' в методах массивов

183
03 ноября 2019, 06:20

Ругается на index, пишет:

[ts] Cannot find name 'index'. [2304]

  const result: any = sort.map((val, i) => ({ ...val, value: index++ }), index = 1)

Пример тестовый, мне нужно работать именно со значением index

Answer 1

initialValue - есть только у reduce. У остальных методов, вторым аргументом передается this, который будет использован в callback, переданном в первом аргументе.

Но даже не смотря на это, ошибка просто в том, что нигде не объявлена переменная index.

Для решения достаточно объявить ее:

var index = 1;
const result: any = sort.map((val, i) => ({ ...val, value: index++ }))

Хотя странно, почему тут не использовать параметр i, в котором и передается индекс текущего элемента.

именно в thisArg я хочу объявлять свою переменную index

Объявлять внутри выражения нельзя. Однако можно передать туда объект с полем index, заменив при этом стрелочную функцию на обычную

const result: any = sort.map(function(val, i) { return { ...val, value: this.index++ };}, {index: 1});

Однако в этом случае доступа извне к нему тоже не будет, поэтому в любом случае если index понадобится снаружи, придется объявлять переменную отдельно.

Хочу хранить переменную index как this и использовать её

Для этого эта переменная в любом случае должна быть объявлена и передана вторым параметром. Однако с просто числом данный вариант невозможен, так как его невозможно будет изменить между вызовами.

То есть, сделав this++ внутри callback будет ошибка Invalid left-hand side expression in postfix operation

READ ALSO
json правка данных [закрыт]

json правка данных [закрыт]

есть json как посчитать одинаковые поля убрать их и отправить 5 параметром количество одинаковых параметров За любую идею буду благодарен...

177
Создать страницу с фоном любого цвета, при клике в любую область которой осуществляется закрашивание фигуры определенного размера

Создать страницу с фоном любого цвета, при клике в любую область которой осуществляется закрашивание фигуры определенного размера

В общем-то дело такое: необходимо создать страницу с фоном любого цвета, при клике в любую область которой осуществляется закрашивание фигуры...

193
Альтернатива для длинных строк вставки

Альтернатива для длинных строк вставки

функция success с ajax запроса на createНу и соответственно добавляет элемент

165
webmoney client Ошибки при установки в Nodejs

webmoney client Ошибки при установки в Nodejs

не могу никак установить вот этот модуль из npm

190