【问题标题】:This expression is not callable. Type 'Number' has no call signatures此表达式不可调用。类型“号码”没有呼叫签名
【发布时间】:2020-06-13 05:49:20
【问题描述】:

您好,我是 Typescript 的新手,我有一个对象类型变量,其中可能是来自不同类型或嵌套对象的不同值。现在我的问题是,如何为这个对象定义一个模型,以便在调用不同的键时不会遇到示例错误?

例如:

export class Controller {
protected static response(res: Response, statusCode: number = 200, data: any, user: string = '', dev: string = '', code: number = 200, result: string = 'success'){
    res.status(statusCode).send({
        data: data,
        message: {
            user: '',
            dev: ''
        },
        code: 403,
        result: 'Error'
    })
}


 ERROR: res.status ---> This expression is not callable. Type 'Number' has no call signatures

【问题讨论】:

    标签: node.js typescript model


    【解决方案1】:

    res.status 是根据该错误消息的数字。看起来没有使用正确的参数调用 Controller。 console.log(res) 在调用 res.status 之前,请检查您的呼叫站点代码。

    【讨论】:

      【解决方案2】:

      我也遇到了这个错误,并意识到我只是忘记了导入响应。添加导入行为我解决了这个问题。

      import express, {Request, Response} from 'express';
      

      【讨论】:

        【解决方案3】:

        如果它对其他人有帮助,我在这样的情况下也看到了同样的错误:

        const shift = progressWidth * percentage
        (this.$refs.expected as Vue).$el.style.left = "100px"
        

        其中percentagenumber。发生错误是因为没有分号,第二行被解释为该行的一部分,如下所示:

        const shift = progressWidth * percentage(this.$refs.expected as Vue).$el.style.left = "100px"
        

        这可以通过添加前导分号来解决:

        const shift = progressWidth * percentage
        ;(this.$refs.expected as Vue).$el.style.left = "100px"
        

        或者更好的是,重新排列以使其完全不需要:

        const expected = (this.$refs.expected as Vue).$el
        const shift = progressWidth * percentage
        expected.$el.style.left = "100px"
        

        【讨论】:

          猜你喜欢
          • 2022-01-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-10-11
          • 1970-01-01
          • 2020-08-08
          • 2020-12-27
          • 1970-01-01
          相关资源
          最近更新 更多