Redux toolkit创建操作&x27;t为Typescript添加值

Redux toolkit创建操作&x27;t为Typescript添加值,typescript,redux,react-redux,redux-toolkit,Typescript,Redux,React Redux,Redux Toolkit,我在这里遵循官方示例,并尝试键入PayloadAction,如下所示: 导入{ 创建切片, PayloadAction, 纳米级, }来自“@reduxjs/toolkit” 类型MyObjectType={ uuid:string 另一个属性:字符串 // ... } const slice=createSlice({ 名称:“oneSlice”, 初始状态:{}, 减速器:{ 补充:{ 减速器(状态、动作:PayloadAction){ const{x,uuid,anotherProp}=a

我在这里遵循官方示例,并尝试键入PayloadAction,如下所示:

导入{
创建切片,
PayloadAction,
纳米级,
}来自“@reduxjs/toolkit”
类型MyObjectType={
uuid:string
另一个属性:字符串
// ...
}
const slice=createSlice({
名称:“oneSlice”,
初始状态:{},
减速器:{
补充:{
减速器(状态、动作:PayloadAction){
const{x,uuid,anotherProp}=action.payload//在uuid上的此处出错
//用{x,uuid,另一个prop}做点什么
//我需要将它用作索引:state.something[uuid]={uuid:uuid,anotherProp:anotherProps}
},
准备(x:string,另一个prop:string){
返回{
有效载荷:{
uuid:nanoid(),
x,,
另一个支柱,
},
}
},
}
}
})
但是,我在尝试分解
action.payload
时出错。如何推断
action.payload
uuid
属性

我找到了一个奇怪的解决方案,在PayloadAction中传递整个对象类型,并在
prepare()

。。。
补充:{
减速器(状态、动作:PayloadAction){
常量{x,myobject}=action.payload
//这里没有问题
},
准备(x:字符串,myobject:myobject类型){
myobject.uuid=nanoid()
返回{
有效载荷:{
x
myobject:myobject
},
}
},
}
...
有没有更好的方法解决此问题?

您必须添加:

      reducer(state, action: PayloadAction<{x: string; anotherProp: string; uuid: string}>) {
reducer(状态、操作:PayloadAction){
如果您定义了不存在的内容,这仍然会警告您:

      reducer(state, action: PayloadAction<{x: string; anotherProp: string; foo: string}>) {
reducer(状态、操作:PayloadAction){
但是仅仅请求一个子类型(像您这样)并不是一个错误,因此它不会警告您必须添加它:

      reducer(state, action: PayloadAction<{x: string; anotherProp: string; uuid: string}>) {
reducer(状态、操作:PayloadAction){
如果您定义了不存在的内容,这仍然会警告您:

      reducer(state, action: PayloadAction<{x: string; anotherProp: string; foo: string}>) {
reducer(状态、操作:PayloadAction){
但是仅仅请求一个子类型(像您这样)并不是一个错误,因此它不会警告您

操作:PayloadAction
操作:PayloadAction