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

Posted

技术标签:

【中文标题】错误 TS2346:提供的参数与调用目标的任何签名都不匹配【英文标题】:error TS2346: Supplied parameters do not match any signature of call target 【发布时间】:2016-02-15 06:48:24 【问题描述】:

我是 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();

然后我想在我的组件中使用它,像这样:

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

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

【问题讨论】:

【参考方案1】:

快速浏览 Angular 源代码:

static toPromise(obj: Observable&lt;any&gt;): Promise&lt;any&gt; return (&lt;any&gt;obj).toPromise();

显示toPromise 方法应该收到Observable&lt;any&gt;(您的电话是:toPromise()

我猜这就是错误的原因

【讨论】:

所以我应该将参数放入 toPromise() 方法中,但实际上我不知道在 http.get 请求之后应该放什么。 A2 的文档现在很差:/ 我正在通过互联网寻找解决方案 我也会寻找这个。为什么不坚持使用 Observables?

以上是关于错误 TS2346:提供的参数与调用目标的任何签名都不匹配的主要内容,如果未能解决你的问题,请参考以下文章

Typescript 编译器错误 - 提供的参数与调用目标的任何签名都不匹配

Angular2 - 提供的参数与调用目标的任何签名都不匹配

TS2351:不能将“new”与类型缺少调用或构造签名的表达式一起使用。角度 8

AngularX TS错误无法调用类型缺少调用签名的表达式[关闭]

Angular 2/4/6/7 - 使用路由器进行单元测试

如何检查检查PInvoke签名的调用约定和参数与非托管的目标签名是不是匹配?