不能在打字稿上分配减速器?

时间:2019-03-15 11:19:58

标签: javascript reactjs typescript redux

我在这里关注有关Redux +打字稿的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 个答案:

答案 0 :(得分:1)

关键部分在这里:

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

听起来您需要启用严格的null检查(--strictNullChecks)。没有它们,代码中的每种类型基本上都是隐式的YourType | undefined,但是您提供的回调似乎要求回调完全接受/提供StoreState,而不是StoreState | undefined。有关可空类型和严格的空检查here的更多信息。

(否则,我可能会犯错,而您 do 启用了严格的null检查,但是您使用的是 not 。我想我有正确的方法。)