Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么ngRX操作有一个类型?_Javascript_Angular_Typescript_Ngrx - Fatal编程技术网

Javascript 为什么ngRX操作有一个类型?

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框架继承了一些Angle代码

操作的定义如下:

从“@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谢谢,这真的很有帮助,我认为“新方法”有点否定了我的问题