Firebase редуктор теряет тип после набора пользовательских редуктор - PullRequest
0 голосов
/ 03 мая 2020

Я новичок в Typescript и redux, так что терпите меня. Чтобы использовать

useSelector((state: RootState) => state.auth.authError);

, мне пришлось набрать мой редуктор, что я и сделал следующим образом:

let authReducer: (state: any, action: any) => AuthState

, где AuthState:

interface AuthState {
    authError: string;
    isLoading: boolean;
}

Сейчас Я могу успешно использовать useSelector, но при создании моего rootReducer

const rootReducer = combineReducers({
    auth: authReducer,
    firebase: firebaseReducer,
});

мой firebaseReducer потерял свой первоначальный тип и теперь имеет тип firebase: Reducer<unknown, any>. Из-за этого я не могу получить доступ к firebase из состояния, чтобы проверить, загружена ли firebase, чтобы предотвратить несанкционированный доступ к страницам, требующим входа в систему. В основном:

useSelector((state: RootState) => state.firebase.auth)

throws: Объект имеет тип 'unknown'.

Вот мое создание магазина:

const store = createStore(
    rootReducer,
    applyMiddleware(thunk.withExtraArgument({ getFirebase }))
);

и мой RootState:

export type RootState = ReturnType<typeof rootReducer>;

Я также пытался export type RootState = ReturnType<typeof store.getState>;

РЕДАКТИРОВАТЬ: я нашел временное решение. Замена useSelector((state: RootState) => state.firebase.auth) на useSelector((state: any) => state.firebase.auth) работает и не выдает ошибку, но это не лучшее решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...