首页 文章

Typescript - 声明类型既不是'void'也不是'any'的函数必须返回一个值

提问于
浏览
2

我是Angular2 / Typescript的新手,我正在尝试编译我的项目,但是我收到了这个错误:

A function whose declared type is neither 'void' nor 'any' must return a value

这是代码:

SyncCustomer(codCli: string): Observable<any>
{ 
    this.mdService.Ordini_Sincronizza(codCli).subscribe(
    data => {          
      return Observable.of(data);
    },
    error => {
      console.log(error);
      return Observable.of(error);
    });  
}

我没有意识到问题出在哪里......

感谢支持!

更新001:

我用这种方式编辑了代码,现在编译了......

SyncCustomer(codCli: string): Observable<any> {
    return Observable.of(this.mdService.Ordini_Sincronizza(codCli).subscribe(
      data => {
        return data;
      },
      error => {
        console.log(error);
        return error;
      }));
  }

返回订阅的可观察量是否有意义?

1 回答

  • 2

    return data / return error 部分仅与两个回调相关,您的方法不会为您的第一个代码返回任何内容,而第二个代码则返回 Subscription .

    如果要返回Observable,则不应直接订阅:

    SyncCustomer(codCli: string): Observable<any> {
      return Observable.of(this.mdService.Ordini_Sincronizza(codCli);
    }
    

    其实我觉得你不需要在这里订阅 . 你需要订阅以获得一个冷的Observable来开始发射,但是你应该订阅你需要数据的地方(通常在组件内部)或者不在组件代码中订阅,而是在模板内使用 async 管道订阅 .

相关问题