javascript - Typescript过滤器中回调函数的类型是什么?
问题描述
ordersData = [
{ id: 100, name: 'order 1' },
{ id: 200, name: 'order 2' },
{ id: 300, name: 'order 3' },
{ id: 400, name: 'order 4' }
];
constructor( private objHelloService: HelloServiceService, private formBuilder: FormBuilder )
{
this.form = this.formBuilder.group({
orders: new FormArray([])
});
this.addCheckboxes();
}
private addCheckboxes()
{
this.ordersData.forEach((o, i) => {
const control = new FormControl(i === 0); // if first item set to true, else false
(this.form.controls.orders as FormArray).push(control);
});
}
submit()
{
const selectedOrderIds = this.form.value.orders.map((v:string, i:number) => v ? this.form.value.orders[i].id : null).filter(v => v !== null);
console.log(selectedOrderIds);
}
问题在这里:
.filter(v => v !== null)
打字稿说我没有指定v
.
这里的类型是v
什么?
如何指定?
解决方案
试试下面,
const selectedOrderIds = this.form.value.orders
.filter(i => i !== null) //Filter array of orders by null check
.map(v => v.id) //Get only ids out of array of orders
ordersData = [
{ id: 100, name: 'order 1' },
null,
{ id: 200, name: 'order 2' },
null,
{ id: 300, name: 'order 3' },
null,
{ id: 400, name: 'order 4' }
];
const selectedOrderIds = ordersData
.filter(i => i !== null) //Filter array of orders by null check
.map(v => v.id) //Get only ids out of array of orders
console.log(selectedOrderIds) //[100, 200, 300, 400]
推荐阅读
- oracle - Oracle SQL - 无法看到创建的表
- c# - 我在使用 Office365 的 oauth2 身份验证对用户进行身份验证时遇到问题
- html - 使用 XSLT 将带有名称和内容的元标记添加到我的 html 页面
- computer-vision - 图像转换:将直线转换为圆弧
- java - 读取spss文件java
- r - 使用 ggplot2 创建渐变色条
- reactjs - 从 redux-form 覆盖初始值
- laravel - 将图像存储在本地驱动器中并在数据库中保存路径
- pyqt5 - PyQt5 pyqtgraph(添加/删除)曲线在单个图中
- laravel - Laravel - 获取父类别中的所有项目