首页 > 解决方案 > 使用 Typescript 从元组中选择

问题描述

我正在学习一门课程,当前的挑战是“编写一个函数,该函数采用一组姓名和年龄,然后只返回姓名。”

到目前为止,我的方法看起来像这样:

function names(arr: [string, number]) {
  let result: [] = [];
  arr.forEach((element) => {
    if (typeof(element) === "string") {
      result.push(element);
    }
  })
  return result;
}

我试图让测试通过这个断言,即我实际上只得到了从我的函数返回的字符串。我很茫然,我从尝试解决方案中得到的当前错误是

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

Expected: ['Amir', 'Betty'] but got: type error: Argument of type 'string' is not assignable to parameter of type 'never'.

任何帮助是极大的赞赏!

标签: javascripttypescript

解决方案


你只需要定义

let result: [] = [];

作为

let result: string[] = [];

看起来您的参数也是一个数组数组。所以你需要定义

arr: [string, number]

作为

arr: [string, number][]

或等效语法是

arr: Array<[string, number]>

然后也改变你的 for 循环。类似的东西。

function names(arr: [string, number][]) {
  let result: string[] = [];
  arr.forEach(([element]) => {
    result.push(element);
  })
  return result;
}

请注意,我使用解构赋值来获取第一个元素。


推荐阅读