Внутри класса TypeScript, используя ключевое слово this, фактически ссылающееся на текущий экземпляр класса. Вы можете увидеть это в документации :
class Greeter {
greeting: string;
constructor(message: string) {
this.greeting = message;
}
greet() {
return "Hello, " + this.greeting;
}
}
let greeter = new Greeter("world");
Со статическими свойствами, с другой стороны, вы должны ссылаться на статическое свойство с именем класса (это также пример из документации):
class Grid {
static origin = {x: 0, y: 0};
calculateDistanceFromOrigin(point: {x: number; y: number;}) {
let xDist = (point.x - Grid.origin.x);
let yDist = (point.y - Grid.origin.y);
return Math.sqrt(xDist * xDist + yDist * yDist) / this.scale;
}
constructor (public scale: number) { }
}
При передаче функции в обработчик событий вы можете использовать синтаксис функции стрелки, который устанавливает контекст для текущего экземпляра:
class Greeter {
constructor(message: string) {
handler.addEventListener(this.greet);
}
greet = () => {
return "Hello, " + this.greeting;
}
}
Другой вариант - использовать JavaScript-функцию bind
в переданной функции с ключевым словом this в качестве аргумента, чтобы у функции был контекст экземпляра:
class Greeter {
constructor(message: string) {
handler.addEventListener(this.greet.bind(this));
}
greet() {
return "Hello, " + this.greeting;
}
}
Вы можете прочитать больше об 'этом' здесь .