Наблюдаемая ошибка типа из селектора ngrx, которая возвращает несколько типов - PullRequest
0 голосов
/ 04 февраля 2020

Я могу назначить результат функции 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>;

Но в этом контексте это будет только число, и я хочу установить тип соответственно.

ИЛИ я должен иметь два разных селектора, каждый из которых возвращает один тип?

1 Ответ

0 голосов
/ 04 февраля 2020

Оператор карты Rx Js позволяет вам назначить тип ответа, например:

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

ОДНАКО я обнаружил, что запоминание ngrx может добавить дополнительный уровень сложности. Учитывая все это, у меня будет один тип возврата для каждого селектора.

...