使用方法来保护Typescript中类成员属性的类型

时间:2018-07-15 10:58:24

标签: typescript

我对Typescript还是很陌生,并在调用函数检查其是否可用后尝试访问optionnal类属性。实际检查还依赖于其他属性,我宁愿不重复代码,因为该检查在多个地方使用。

这是一个简短的示例:

class Test {
  private ar?: string[];
  public hasArray(): boolean { // Guard here ?
    return !!this.ar;
  }
  public push(s: string) {
    if (this.hasArray()) {
      this.ar.push(s);         // Error
    }
  }
}

是否有办法通过“记录”调用this.arhasArray可用来使此代码起作用?

我尝试过的事情:

  • public hasArray(): boolean替换为public hasArray(): this.ar is string[]->不支持
  • public hasArray(): boolean替换为public hasArray(): this is { ar: string[] }->类型冲突@ @ this.ar.push()

我知道我可以将if (this.hasArray())转换为if (this.hasArray() && this.ar)的事实,但是感觉更像是一个头,我想知道是否有人知道解决此问题的方法。

预先感谢

0 个答案:

没有答案