【问题标题】:Observable type error from ngrx selector that returns multiple types来自返回多种类型的 ngrx 选择器的可观察类型错误
【发布时间】:2020-05-20 04:18:04
【问题描述】:

我可以根据下面的伪代码将返回多种类型的 Typescript 函数的结果分配给具有单一类型的变量:

export class MyComponent {
    aNumber: number;
    numberOrString(returnNumber: boolean): number | string {
        if (returnNumber === true) {
            return 5;
        } else {
            return 'Five';
        }
    }
    constructor(){
        this.aNumber = this.numberOrString(true) as number; 
    }
}

如果在构造函数的行中省略了“as number”,则会引发类型错误。

我怎样才能做同样的事情,但使用返回多种可能类型的 ngrx 选择器?例如。以下:

aNumber$: Observable<number>;
this.aNumber$ = this.store$.pipe(select(numberOrString, { returnNumber: true }));

除非我将 aNumber$ 定义为:

aNumber$: Observable<number | string>;

但在这种情况下它只会是一个数字,我想相应地设置类型。

或者我应该有两个不同的选择器,每个选择器都返回一个类型?

【问题讨论】:

  • 可以分享选择器代码吗?

标签: angular typescript types observable ngrx


【解决方案1】:

RxJs 映射运算符允许您为响应分配一个类型,例如:

aNumber$: Observable<number>;
this.aNumber$ = this.store$.pipe(select(numberOrString, { returnNumber: true }),map(response => response as number));

但是,我发现 ngrx 记忆化可以进一步增加复杂性。综合考虑,我将为每个选择器设置一个返回类型。

【讨论】:

    猜你喜欢
    • 2021-12-23
    • 2018-12-30
    • 2017-01-04
    • 1970-01-01
    • 2016-05-03
    • 2016-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多