我有一個代碼,其中memberships$是具有屬性“角色”的物件的可觀察物件。我想使用reduce函式來遍歷所有這些,如果有人的角色是“收藏家”,我想回傳 value true。這是代碼:
hasCollectorRole$: Observable<boolean> = this.memberships$.pipe(
map(arr => {
return arr.reduce((acc, val) => {
if (val.role == "Collector") {
acc = true;
}
return acc;
}, false)
})
);
這是我得到的錯誤:
Type 'true' is not assignable to type 'false'.
我該如何解決?
uj5u.com熱心網友回復:
如果要遍歷串列并查看是否有任何角色等于,您可能應該使用.some()而不是.reduce()"Collector"
hasCollectorRole$: Observable<boolean> = this.memberships$.pipe(
map(arr => {
return arr.some((val) => val.role === "Collector")
})
);
const testCollector = ['test', 'Collector'];
const testNoCollector = ['test', 'NotCollector'];
console.log('result with Collector', testCollector.some(t => t === 'Collector'));
console.log('result Without Collector', testNoCollector.some(t => t === 'Collector'));
uj5u.com熱心網友回復:
嘗試通過以下方式指定減速器的默認值型別:
arr.reduce(..., false as boolean)
現在,看起來 TS 認為應該回傳的型別是false,不是boolean,并且true不能分配給 type false。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/444560.html
上一篇:需要想法如何決議以下JSON格式
