错误TS2346:提供的参数与呼叫目标的任何签名都不匹配

art*_*urr 5 http request promise typescript angular

我是Typescript和Angular2的新手,我正在尝试在http get请求中创建promise,但是下面的代码(正确的return this.http.get(url)行给了我错误:

error TS2346: Supplied parameters do not match any signature of call target.

在我的服务中我有方法 isLoggedIn

isLoggedIn(): Promise<Object> {
    return this.http.get('/some/path')
        .map((res: Response) => res.json())
        .toPromise();
}
Run Code Online (Sandbox Code Playgroud)

然后我想在我的组件中使用它,如下所示:

onInit() {
    this.login.isLoggedIn()
    .then((data: any) => {
        if (data.hasOwnProperty('status') && data.status === 401) {
            this.router.navigate(['/Login']);
        } else {
            this.router.navigate(['/Home'])
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

我正在寻找如何使用http请求并承诺正确的方式,但我找不到任何好的描述.

Yan*_*aim 0

快速浏览一下 Angular 源码:

static toPromise(obj: Observable<any>): Promise<any> { return (<any>obj).toPromise(); }

显示该toPromise方法应该收到一个Observable<any>(您的电话是toPromise():)

我想这就是错误的原因