Как создать объект с некоторыми значениями массива без сохранения ссылки на массив? - PullRequest
0 голосов
/ 06 мая 2020

Другими словами; как я могу преобразовать

// an array of length >= 3
let myArray = returnOfSomeParametricFunction(); // assuming repeating rhs removes dryness

let myObj = { staticKeyName: myArray[1], anotherStaticKeyName: myArray[2] };

в одинарный лайнер. Возможно что-то вроде:

let myObj = returnOfSomeParametricFunction().reduce(arr=> { staticKeyName: arr[1], anotherStaticKeyName: arr[2] };

1 Ответ

1 голос
/ 06 мая 2020

В этом случае, если бы мне нужно было сделать это в одной строке и не вводить новую переменную в той же области, что и myObj, и меня не заботила удобочитаемость, я бы использовал такую ​​стрелочную функцию:

let myObj = (a => ({ staticKeyName: a[1], anotherStaticKeyName: a[2] }))(
  returnOfSomeParametricFunction());

Вы можете проверить, что myObj имеет свойства правильных типов. Например, если дан

declare function returnOfSomeParametricFunction(): [Date, number, string];

Тогда myObj будет иметь тип:

/*
let myObj: {
    staticKeyName: number;
    anotherStaticKeyName: string;
}
*/

Хорошо, надеюсь, что это поможет; удачи!

Детская площадка ссылка на код

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...