Javascript 为什么ngRX操作有一个类型?
我使用ngRX框架继承了一些Angle代码 操作的定义如下:Javascript 为什么ngRX操作有一个类型?,javascript,angular,typescript,ngrx,Javascript,Angular,Typescript,Ngrx,我使用ngRX框架继承了一些Angle代码 操作的定义如下: 从“@ngrx/store”导入{Action}; 导出常量MY_ACTION:string='MY_ACTION'; 导出类MyAction实现操作{ 只读类型=我的操作; 构造函数(公共有效负载?:任何){ } } 发送方式如下: store.dispatch(new MyAction()); 类似于: 导出函数storeReducer(状态:任意,操作:操作):应用程序状态{ console.log(“***”+action
从“@ngrx/store”导入{Action};
导出常量MY_ACTION:string='MY_ACTION';
导出类MyAction实现操作{
只读类型=我的操作;
构造函数(公共有效负载?:任何){
}
}
发送方式如下:
store.dispatch(new MyAction());
类似于:
导出函数storeReducer(状态:任意,操作:操作):应用程序状态{
console.log(“***”+action.type);
开关(动作类型){
我的行动:
返回handleMyAction(状态、动作);
}
}
}
函数handleMyAction(状态:ApplicationState,操作:MyAction):ApplicationState{
const newState:ApplicationState=\ u0.cloneDeep(状态);
//根据需要更改newState
返回新闻状态;
}
并签署如下文件:
@Effect()doSomethingWithMyAction$:Observable=this.actions$
.烟斗(
类型(我的动作))
.switchMap(操作=>
//做点什么
);
现在我可能在这里表现出我对JS的无知(来自.net背景)
但是为什么一个动作有一个类型(设置为常量字符串)?你不能用typeOf
之类的方法来检查它是什么类型的动作吗
e、 g
导出类MyAction实现操作{
构造函数(公共有效负载?:任何){
}
}
开关(类型(动作)){
案例MyAction://或类型(MyAction)
返回handleMyAction(状态、动作);
}
}
@Effect()doSomethingWithMyAction$:Observable=this.actions$
.烟斗(
类型(MyAction))
.switchMap(操作=>
//做点什么
);
然后,您可以去掉类型常量,并获得更简单的代码
事实上,不是这样做的,这让我认为,不能这样做,或者有很好的理由不这样做,所以我认为是我对js/typescript缺乏了解
在typescript中,typeOf
是否给了您类的属性,或者只是“object”或类似的属性
如果(action Is MyAction),是否有js/ts与c#的
相当?这并不能回答您的问题,但如果您继承了代码库并开始了新的开发,我建议您花点时间升级到NgRx 8.x。这是一个更干净、更少的样板,而且效果是打字的。@xandermonkey谢谢,这真的很有帮助,我认为“新方法”有点否定了我的问题