How to access static members from instance methods in typescript?

前端 未结 1 1999
Happy的楠姐
Happy的楠姐 2020-12-15 17:49

I try to use a static member from an instance method. I know about accessing static member from non-static function in typescript, but I do not want to hard code the class t

相关标签:
1条回答
  • 2020-12-15 18:16

    You simply need ClassName.property :

    class Logger {
      protected static PREFIX = '[info]';
      public log(message: string): void {
        alert(Logger.PREFIX + string); 
      }
    }
    
    class Warner extends Logger {
      protected static PREFIX = '[warn]';
    }
    

    MORE

    from : http://basarat.gitbooks.io/typescript/content/docs/classes.html

    TypeScript classes support static properties that are shared by all instances of the class. A natural place to put (and access) them is on the class itself and that is what TypeScript does:

    class Something {
        static instances = 0;
        constructor() {
            Something.instances++;
        }
    }
    
    var s1 = new Something();
    var s2 = new Something();
    console.log(Someting.instances); // 2
    

    UPDATE

    If you want it to inherit from the particular instance's constructor use this.constructor. Sadly you need to use some type assertion. I am using typeof Logger shown below:

    class Logger {
      protected static PREFIX = '[info]';
      public log(message: string): void {
        var logger = <typeof Logger>this.constructor; 
        alert(logger.PREFIX + message); 
      }
    }
    
    class Warner extends Logger {
      protected static PREFIX = '[warn]';
    }
    
    0 讨论(0)
提交回复
热议问题