从typescript中的非静态函数访问静态成员

时间:2014-03-19 19:33:29

标签: typescript static-methods static-members non-static

我正在尝试从类中的非静态函数访问静态成员,并且出现错误

  

无法从实例变量

访问静态成员

这是我的代码看起来的样子 -

class myClass {
  public static testStatic: number = 0;
  public increment(): void {
    this.testStatic++;
  }
}

根据我对静态成员/方法的理解,我们不应该访问静态函数中的非静态成员,反之亦然。 静态成员已经创建并且有效,那么为什么我不能从我的非静态方法访问?

3 个答案:

答案 0 :(得分:10)

从类内部访问静态成员的方式与从类外部访问的方式相同:

class myClass {
  public static testStatic: number = 0;
  public increment(): void {
    myClass.testStatic++;
  }
}

答案 1 :(得分:1)

我个人更喜欢以下精神:

class myClass{
    public static testStatic: number = 0;
    private class;

    constructor(){
        this.class = myClass;
    }

    public increment(): void {
        this.class.testStatic++;
    }
}

一个很酷的事情是打字稿实际上允许我使用' class'作为变量。

答案 2 :(得分:0)

为了允许继承,您必须在实例方法中使用,以便不重复className:

<typeof ParentClass>this.constructor

请参阅此答案中的更新部分: https://stackoverflow.com/a/29244254/1936549