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

标签 angular

在我的 angular2 应用程序中,我有向 url 发送获取请求的服务。

这是我的服务:

import {Http} from '@angular/http';
import {Observable} from 'rxjs/Observable';
import 'rxjs/add/operator/map';
import {Injectable} from '@angular/core';
import {Gallery} from './gallery';

@Injectable()
export class InstagramService{

    constructor(private _http:Http){

    }

    getGallery(username: string) : Observable<Gallery> {
        var result=this._http.get("https://www.instagram.com/"+username+"/media/").map(res => res.json());
    }

}

我已将返回类型定义为 Observable<Gallery> ,但它提示说:

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

这段代码出了什么问题?

最佳答案

如果你声明了一个返回类型,那为什么不返回任何东西呢?

在这种情况下,通常这就是您想要的。

getGallery(username: string) : Observable<Gallery> {
     return this._http.get("https://www.instagram.com/"+username+"/media/").map(res => res.json());
}

var result 可能不是您所期望的,因为 _http.get(...) 返回一个 Observable 而不是一个值。

getGallery() 的调用者随后可以订阅以在值到达时收到通知。

instagramService.getGallery.subscribe((result) => this.galleryData = result);

当一个值到达时 (result) => this.galleryData = result 被调用并且 result 被分配给你的 galleryData当前组件或服务。

关于angular - 声明类型既不是 'void' 也不是 'any' 的函数必须返回一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38837261/

相关文章:

angular - 无法读取未定义 Angular 4 的属性 'name'

angular - IONIC 2 构建错误 : "ngc: Error: Error Cannot write file ...[myProject]/.tmp/[some folder]/*.d.ts"

angular - 如何在 Ionic 2 中使用 *ngIf 条件从 html 调用函数?

css - Bootstrap 模式弹出窗口使屏幕变暗,但屏幕的少数部分仍显示在同一级别并且不会变暗

Angular2 获取表单控件的现有验证器

typescript - 将组件作为 'argument' 传递给 Angular 2 中的另一个组件

Angular 9 - 不是已知元素

html - Angular 中的生命周期钩子(Hook)

css - Clarity Design Datagrid如何改变列宽

angular - Lodash index.d.ts :244:12 Angular2 web pack build 中的重复标识符 '_'