Я создал функцию, которая либо добавляет элемент в массив, либо обновляет элемент до заданного индекса, если он установлен.
Я использую TypeScript , и я обнаружил действительно странное поведение что я не могу понять.
Вот ссылка Playground .
Эта упрощенная функция подходит для TypeScript:
function OKAddOrUpdateFunction(item: string, index?: number) {
const foo = index !== undefined
? Object.assign([], initialArray, { [index]: item }) : [...initialArray, item];
}
Теперь, если я использую const
и сохраняю, либо определен index
, либо нет, я могу использовать его позже:
function NOKAddOrUpdateFunction(item: string, index?: number) {
const isIndexDefined = index !== undefined;
const foo = isIndexDefined
? Object.assign([], initialArray, { [index]: item }) : [...initialArray, item];
}
TypeScript выдает ошибку, указывая на индекс внутри Object.assign
:
(parameter) index: number | undefined
A computed property name must be of type 'string', 'number', 'symbol', or 'any'.(2464)
И я не могу понять, почему ...