не можете назначить редуктор на машинописи? - PullRequest
2 голосов
/ 15 марта 2019

Я следую учебному пособию Microsoft по редуксу + машинопись здесь: https://github.com/Microsoft/TypeScript-React-Starter, но почему-то в последней части я застрял:

const store = createStore<StoreState, any, any, any>(
  enthusiasm,
  {
    enthusiasmLevel: 1,
    languageName: 'TypeScript'
  },
  composeEnhancers(applyMiddleware(thunk))
);

это ошибка, которую я получаю вместе со снимком экрана ниже:

Argument of type '(state: StoreState, action: EnthusiasmAction) => StoreState' is not assignable to parameter of type 'Reducer<StoreState, any>'.
  Types of parameters 'state' and 'state' are incompatible.
    Type 'StoreState | undefined' is not assignable to type 'StoreState'.
      Type 'undefined' is not assignable to type 'StoreState'.ts(2345)

enter image description here

Полагаю, я следовал всему и здесь, я хочу добавить и слова, но у меня ошибка в аргументации аргумента, и я не знаю почему, помогите?

1 Ответ

1 голос
/ 15 марта 2019

Ключевая часть здесь:

Type 'StoreState | undefined' is not assignable to type 'StoreState'.
      Type 'undefined' is not assignable to type 'StoreState'.ts(2345)

Похоже, вам нужно включить строгие проверки на ноль (--strictNullChecks). Без них, по сути, каждый тип в вашем коде неявно YourType | undefined, но для того, что вы предоставляете этот обратный вызов, кажется, требуется обратный вызов, который принимает / предоставляет точно StoreState, а не StoreState | undefined. Подробнее об обнуляемых типах и строгих проверках на ноль здесь .

(Или у меня может быть неправильный конец флешки, и у вас do включены строгие проверки на ноль, но то, что вы используете, ожидает, что они не будут. Но я думаю, Я правильно понял.)

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