【问题标题】:alert(): cannot invoke an expression whose type lacks a call signaturealert():无法调用类型缺少调用签名的表达式
【发布时间】:2017-03-17 18:20:44
【问题描述】:

前言:我查看了与此错误类似的问题,但没有发现任何有用的信息。

这段代码到底有什么问题?我在error => alert(error.json().message):

的行中遇到错误
    this.authHttp
        .patch('https://' + myConfig.domain + '/api/v2/users/' + this.auth.userProfile.user_id, data, {headers: headers})
        .map(response => response.json())
        .subscribe(
            response => {
                this.auth.userProfile = response;
                localStorage.setItem('profile', JSON.stringify(response));
            },
            error => alert(error.json().message)
        );

这是我用于第一个的数据和标题对象:

    var alert = new Alert;
    alert.name = this.name;
    // etc....

    var headers: any = {
        'Accept': 'application/json',
        'Content-Type': 'application/json'
    };

    var data: any = JSON.stringify({
        user_metadata: {
            alerts: [alert]
        }
    });

【问题讨论】:

  • 尝试找出可能导致此问题的两个文件之间的不同之处。也许您正在包含一些向alert 添加签名的东西?另外,为什么你有两次完全相同的代码?
  • @nitzan 因为data在其他代码中不同,这些语句出现在不同的文件中。检查包括的好主意,我会检查的
  • 天哪,这是因为我放入data 的对象被称为 alert。如果你想发布一个答案说我已经更改了警报的签名我会接受它,我正在编辑我的帖子,所以你明白我的意思

标签: typescript auth0


【解决方案1】:

为了提高知名度,包括来自用户 Nitzan Tomer 的提示作为社区 wiki 答案。

根本原因是添加了更改 alert 签名的附加代码。

在这种特殊情况下,添加一个名为 alert 的变量使其在稍后尝试将 alert 作为函数调用时引发错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-01
    • 2017-12-19
    • 2021-02-06
    • 2017-07-14
    • 1970-01-01
    • 1970-01-01
    • 2020-02-07
    • 2017-02-03
    相关资源
    最近更新 更多