typescript 类型“Observable< void>”不能赋值给类型“void|动作|添加< Action>效果时可观察

xt0899hw  于 2022-11-18  发布在  TypeScript
关注(0)|答案(2)|浏览(91)

“run”在添加效果时出错。尝试手动返回字符串、数字等,但无效。
效果代码:

@Effect() 
getRoles$: Observable<Roles[]> = this.dataPersistence.fetch(CreateActionTypes.GetRoles, {
    run: (action: GetRoles) => {

       return this.formService
         .getRoles()
         .pipe(map(roles => {
           return new RolesLoaded(roles);
          }));
    },
    onError: (action: GetRoles, error) => {
      console.error(error);
      return new RolesLoadError(error);
    }
  });

错误消息:
在应用程序/应用程序/源代码/应用程序/+状态/创建.effects.ts(32,5)中发生错误:
错误TS 2322:
键入'(操作:GetRoles)=〉可观察的 “不能分配给类型”(a:获取角色,状态?:创建部分状态)=〉无效|动作|可观察“。
类型“Observable
”不能赋值给类型“*void|动作|可观察 *'。

5vf7fwbs

5vf7fwbs1#

一个@Effect应该返回一个Action的可观测值,而不是一个Action[],只是Action
在你的情况下,它似乎是一个混淆之间的倍数概念。
以下是@Effect的示例

createProject$ = createEffect(() => this.actions$.pipe(
    ofType(CREATE_PROJECT),
    switchMap(({ name, id }) => this.myService.createProject(name, id).pipe(
      concatMap(project => [
        CREATE_PROJECT_SUCCESS(project),
        NAVIGATE({ path: ['foo', project.id] })
      ]),
      catchHttpError()
    )),
  ));
zbwhf8kr

zbwhf8kr2#

这取决于getRoles()返回的内容。我也遇到过类似的错误。如果getRoles()返回promise,则不使用管道。

return this.formService
     .getRoles().then(()=>{
        return {type: TYPEACTION} 
})

相关问题