我目前正在重构我的一个服务,遇到了一个相当烦人的问题。我有一个API,它返回一个带有多个可选属性的对象。当我想使用属性时,我首先必须检查这个属性是否未定义,否则我会得到一个错误。这可以用if语句来实现。在重构之后,我考虑将检查放在过滤器操作符中。这应该可以工作,并且只获取具有所需属性的对象,但现在linter仍然抛出错误。
interface OptionalObject {
values?: number[]
}
const obs$$ = new BehaviorSubject<OptionalObject>({});
obs$$.pipe(
filter((val) => !!val.values),
map((val) => val.values.length) // Object is possibly 'undefined'
).subscribe(() => {
});
我认为我的项目使用ESLint
我尝试了一个if,它的工作,但我希望它与过滤器的Rxjs
1条答案
按热度按时间cwxwcias1#
解决方案是使用TypeScript TypeGuard: