Redux的状态类型错误时,TypeScript不会出错

时间:2019-09-15 15:37:33

标签: typescript redux

我使用带有React / Redux的TypeScript。我正在尝试将类型添加到我的Redux状态。我知道foo将为空或数字。但是,当我将其作为测试字符串时,它没有出错:

//这是正确的

type State = {
  foo: number;
};

function reducers(state = initialState, action): State {
  //
}

//这是错误的

type State = {
  foo: string;
};

function reducers(state = initialState, action): State {
  //
}

2 个答案:

答案 0 :(得分:1)

不确定在哪里出现错误,但是我建议您也将State类型添加到输入中,因为第一个参数也应该跟随该类型(和initialState)。

这是一个完整的例子:

type State = {
  foo: string;
};

const initialState: State = {
  foo: "bar"
}

function reducers(state: State = initialState, action: { type: string }): State {
  return state;
}

TypeScript Playground

现在更改foo会导致initialState出错,但减速器本身不会出错,因为输入state与类型State的输出匹配。

type State = {
  foo: number; // <- changed to number
};

const initialState: State = {
  foo: "bar" // <- Type 'string' is not assignable to type 'number'.
}

function reducers(state: State = initialState, action: { type: string }): State {
  return state;
}

TypeScript Playground

答案 1 :(得分:0)

Reducer导出了redux,其类型参数为<State, Actions>,使用它。