Задача Typescript перебирать массив кортежей и получать определенные значения

#typescript

#typescript

Вопрос:

Мне нужно написать функцию, которая принимает массив кортежей, каждый кортеж состоит из имени и возраста. Функция должна возвращать только имена.

Итак, я написал это так:

 type someTuple = [string, number]

function names(namesAndAges: someTuple[]) {
  let allNames: string[]
  allNames.push(namesAndAges.forEach( nameAndAge => nameAndAge[0]))
  
  return allNames
}
 

Когда я вызываю его с помощью этого:

 names([['Amir', 34], ['Betty', 17]]);
 

Я получаю эту ошибку:

 type error: type error: Variable 'allNames' is used before being assigned.
 

Может кто-нибудь указать, что не так с этим кодом?

Ответ №1:

Вы не объявили allNames , что это массив, поэтому измените его на это:

 let allNames: string[] = []
 

Если вы хотите получить все имена в массиве, ваша функция должна быть такой:

 type someTuple = [string, number]

function names(namesAndAges: someTuple[]) {
  let allNames: string[] = []
  namesAndAges.forEach( nameAndAge => 
    allNames.push(nameAndAge[0])
  )
  return allNames
}

names([['Amir', 34], ['Betty', 17]]);
 

Игровая площадка

Комментарии:

1. Спасибо, я забыл об этом. Теперь я получаю эту ошибку: ошибка типа: аргумент типа ‘void’ не может быть присвоен параметру типа ‘string’

2. Идеально! Спасибо!

3. Рад вам помочь 🙂