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
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]';
}