Как правильно установить тип возврата селекторов NGXS - PullRequest
0 голосов
/ 09 июля 2020

При использовании селекторов с параметрами в NGXS вы возвращаете функцию создания селектора, но в этом случае мне нужно установить тип возвращаемого значения селектора single на any, а на самом деле это AccountDetails.

@Selector([AccountsDbState])
public static single(id: string): any {
    return createSelector([AccountsDbState], (state: RootStateModel) => {
        return state.database.accounts.items.find(x => x.id === id);
    });
}

Если попытаться ввести его как AccountDetails, я получаю следующую ошибку от intellisense:

Тип '(состояние: RootStateModel) => AccountDetails' отсутствуют следующие свойства из типа ' AccountDetails ': id, code, OpeningBalance, OpeningDate и еще 3. Ts (2740)

Есть ли способ правильно набрать этот тип селекторов?

--- ОБНОВЛЕНИЕ ---

Полное содержимое файла селектора:

import { createSelector, Selector } from '@ngxs/store';
import { AccountDetails } from '@models/accounts';
import { RootStateModel } from '@state/root-state';
import { AccountsDbState } from './accounts.state';
import { DatabaseStoreStateModel } from 'ngx-rbk-utils';

export class AccountsDbSelectors {
    @Selector([AccountsDbState])
    public static all(state: DatabaseStoreStateModel<AccountDetails>): AccountDetails[] {
        return state.items;
    }

    @Selector([AccountsDbState])
    public static single(id: string): any {
        return createSelector([AccountsDbState], (state: RootStateModel) => {
            return state.database.accounts.items.find(x => x.id === id);
        });
    }
}

Примеры в документации NGXS Selector не устанавливают типы возврата ни в одной функции: (

...