类型数组的打字稿错误:- 无法调用其类型缺少调用签名的表达式

Posted

技术标签:

【中文标题】类型数组的打字稿错误:- 无法调用其类型缺少调用签名的表达式【英文标题】:Typescript error for type Array:- Cannot invoke an expression whose type lacks a call signature 【发布时间】:2018-11-11 03:38:23 【问题描述】:

我在 Angular5 中使用 typescript 创建了如下 getter-setter:-

  private _locations: Array<string> = [];

  constructor()  

  /**
   * Getter locations
   * @return Array<string>
   */
  public get locations(): Array<string> 
    return this._locations;
  

  /**
   * Setter locations
   * @param Array<string> value
   */
  public set locations(value: Array<string>) 
    this._locations = value;
  

当我尝试访问方法位置时

this.signUpService.locations();

我收到一个错误:[ts] Cannot invoke an expression whose type lacks a call signature. Type 'string[]' has no compatible call signatures.

【问题讨论】:

你能贴出访问方法'locations'的代码吗? 来自另一个组件的这样的:- this.signUpService.locations(); 可能是***.com/questions/39691889/…的副本 【参考方案1】:

this.signUpService.locations();

getter 未被调用。他们只是得到

修复:

const value = this.signUpService.locations; 

This is just TypeScript saving you.

【讨论】:

以上是关于类型数组的打字稿错误:- 无法调用其类型缺少调用签名的表达式的主要内容,如果未能解决你的问题,请参考以下文章

打字稿“新”表达式,其目标缺少构造签名,隐含具有“任何”类型

Reactj,类型中缺少打字稿属性'setState'

使用 require 时出现打字稿错误 - 此表达式不可调用。类型“typeof import(...)”没有调用签名.ts(2349)

错误 TS2349:无法调用其类型缺少调用签名的表达式。类型 ' ; ' 没有兼容的调用签名

无法让嵌套类型保护与打字稿中的联合类型一起使用

打字稿用函数创建自己的类型