Недавно я написал много избыточного кода, чтобы обеспечить ограничения на состояние, выбранное в хранилище NGXS.
Например, мне может понадобиться токен, который хранится в сеансе. Технически возможно, что сеанс не инициализирован и токен недоступен. Но когда я запрашиваю один , я убежден, что - это сеанс (и если это предположение неверно, я могу просто выбросить ошибку). Поэтому я продолжаю объявлять такие функции, как getToken()
ниже, чтобы эффективно получить необходимые данные:
@Select(SessionState.session)
session$: Observable<Session | null>;
private getToken(): Observable<string> {
return this.session$.pipe(
switchMap(session => session
? of(session.tokenSeriesId)
: throwError(new Error('You need to log in to perform this action.'))
)
);
}
Есть ли более эффективный способ сделать это? В идеале я хотел бы объявить селектор SessionState.token
, но я открыт для любых предложений, чтобы сделать этот код более пригодным для повторного использования.