Typescript - 一种声明类型既不是' void'也没有任何'必须返回一个值

时间:2017-09-28 07:22:50

标签: angular typescript

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

声明类型既不是'无效的函数。也没有任何'必须返回值

这是代码:

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;
      }));
  }

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

1 个答案:

答案 0 :(得分:2)

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

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

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

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