编辑:这是一个IntelliJ问题,VSCode可以正确显示它。
在https://youtrack.jetbrains.com/issue/WEB-36341
我有一个类型保护方法:
public isValid<T>(result: Result<T>): result is ValidResult<T> {
return result.isValid()
}
Result
类型是:
type Result<T = void> = ValidResult<T> | ErrorResult<T>
我正在尝试弄清楚如何使用类型推断
this.myService
.getResult(...) // returns Observable<Result<ReadonlyArray<string>>>
.pipe(filter(Result.isValid))
.subscribe(result => myFun(result.value)) // here result is "any"
很明显,如果我指定了通用类型,它将按预期工作:
.pipe(filter<Result<ReadonlyArray<string>>, ValidResult<ReadonlyArray<string>>>(Result.isValid))