javascript - 使用 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'.
任何帮助是极大的赞赏!
解决方案
你只需要定义
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;
}
请注意,我使用解构赋值来获取第一个元素。
推荐阅读
- python - Pandas:查找数据框中每一列的最大最小行数
- powerbi - 对一列求和的快速度量,按另一列分组,如果选择过滤器则不会更改 (DAX)
- java - 如何在 Spring Boot 应用程序中将 int Mongodb 类型转换为布尔值
- python - 如何将新字段添加到 drf 查询输出中?
- html - 滚动时div越过标题栏
- javascript - 在一个下拉列表中选择选项禁用另一个选项?
- c# - c# winforms多行文本框到mailto:body
- javascript - 如何获取 WordPress 网站标志
- c++ - 使用 -v 查看调用在 Xcode 中似乎不起作用
- json - 过滤 For Each 循环 - swiftui