Снова выберите createStructuredSelector, набрав w / ownProps - PullRequest
0 голосов
/ 27 февраля 2020

Я довольно новичок в Typescript. Хотите знать, если кто-то может объяснить мне, что я делаю неправильно в фрагменте кода ниже. Создав пользовательский селектор с createStructoredSelector, который должен возвращать мне логическое значение независимо от того, активен ли какой-либо элемент, я попытался напечатать его следующим образом:

export const getIsActive = createStructuredSelector<RootState, OwnProps, Selection>({
  isActive: getIsLangActive
})

где

type RootState = ReturnType<typeof rootReducer> // rootReducer comes from combineReducers

interface OwnProps {
  lang: 'EN' | 'RU'
}

interface Selection {
  isActive: boolean
}

и

const getIsLangActive = createSelector(
  [getCurrentLang, getOwnLang],
  (currentLang, ownLang) => currentLang === ownLang
)


const getLanguage = ({ language }: RootState) => language

const getOwnLang = (_, { lang }) => lang

const getCurrentLang = createSelector(
  getLanguage,
  ({ currentLang }) => currentLang
)

Несмотря на то, что вышеперечисленное работает нормально, я получаю сообщение об ошибке при попытке использовать его в компоненте React:

const { isActive } = useSelector(getIsActive)

Сообщение об ошибке: Argument of type 'ParametricSelector<CombinedState<{ KEY_VALUE_STATE_TYPES }>, OwnProps, Selection>' is not assignable to parameter of type '(state: CombinedState<{ KEY_VALUE_STATE_TYPES }>) => Selection'.

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