我使用带有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 {
//
}
答案 0 :(得分:1)
不确定在哪里出现错误,但是我建议您也将State
类型添加到输入中,因为第一个参数也应该跟随该类型(和initialState
)。
这是一个完整的例子:
type State = {
foo: string;
};
const initialState: State = {
foo: "bar"
}
function reducers(state: State = initialState, action: { type: string }): State {
return state;
}
现在更改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;
}
答案 1 :(得分:0)
从Reducer
导出了redux
,其类型参数为<State, Actions>
,使用它。