TypeScript中使用Ramda.js pipe函数,无需类型断言自动推导类型
解决方案
改写后的Pipe形式代码
const x = R.pipe( R.filter(serviceFilter), R.map(R.assoc('x', '')), R.uniq )(allServices);
类型自动推导说明
- 只要
allServices的类型明确为Service[],且serviceFilter的类型是(service: Service) => boolean,TypeScript就能自动完成整个调用链的类型推导:R.filter(serviceFilter)接收Service[],返回过滤后的Service[];R.map(R.assoc('x', ''))给每个Service对象添加/覆盖x属性(需确保Service接口包含x属性或允许扩展该属性),返回值仍为Service[];R.uniq对Service[]去重后,最终返回类型自然是Service[],无需手动添加as Service[]类型断言。
内容的提问来源于stack exchange,提问作者user1592129
相关产品推荐
相关产品推荐

