Ответ 1
Вам просто нужно 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 поддерживают статические свойства, которые совместно используются всеми экземплярами класса. Естественным местом для размещения (и доступа) является сам класс, и именно это делает TypeScript:
class Something {
static instances = 0;
constructor() {
Something.instances++;
}
}
var s1 = new Something();
var s2 = new Something();
console.log(Someting.instances); // 2
UPDATE
Если вы хотите, чтобы он наследовал от конкретного конструктора экземпляра, используйте this.constructor
. К сожалению, вам нужно использовать некоторое утверждение типа. Я использую typeof Logger
, показанный ниже:
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]';
}