繁体   English   中英

Js immutable - 如何将 map 展平为 Set<number></number>

[英]Js immutable - how to flatten a map to a Set<number>

我有一个Map<number, Shipment>类型的值 shipments,Shipment 有一个Set<number>类型的属性packageIds 当我有多个货件时,我想 go 通过每个货件,获取他们的packageIds并使用每个货件中的所有packageIds制作一个新的平面集:

shipments.flatMap(shipment => shipment.get('packageIds'))

但是,如果我这样做,我会收到 typescript 错误:

TS2322: Type 'Set<number>' is not assignable to type 'Iterable<[unknown, unknown]>'.
  The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types. 
  Type 'IteratorResult<number, any>' is not assignable to type 'IteratorResult<[unknown, unknown], any>'.       
  Type 'IteratorYieldResult<number>' is not assignable to type 'IteratorResult<[unknown, unknown], any>'.         
  Type 'IteratorYieldResult<number>' is not assignable to type 'IteratorYieldResult<[unknown, unknown]>'.           
  Type 'number' is not assignable to type '[unknown, unknown]'. 

当遍历 map 时,我怎样才能得到一个平面集?

Map的 immutablejs flatMap方法返回另一个Map 那不是你想要的。 之前转换为Set ,丢弃Map键:

shipments.toSet().flatMap(shipment => shipment.get('packageIds'))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM