Доступ к переменным в машинописи - PullRequest
0 голосов
/ 25 апреля 2019

Я использую машинопись для рисования холста.Проблема в том, что у меня есть два метода в классе, которым нужен доступ к одним и тем же переменным.Я пытался объявить их как

declare var x;
declare var y

export class Foo {
  constructor() {}
  method1() {
    this.x;
  }

  method2() {
    this.x;
  }
}

Но, похоже, он не работает должным образом.Чего мне здесь не хватает?

Кажется, что ответ вниз вполне нормально работает для нормальных переменныхТак как я использую холст.У меня есть что-то подобное

export class Foo {
  private x: number = 10;
  private y: number = 20;

  constructor(canvas: HTMLCanvasElement) {
    this.canvas = < HTMLCanvasElement > canvas;
    this.ctx = < CanvasRenderingContext2D > canvas.getContext('2d');
  }
  method1() {
    let width = this.canvas.width;
  }
  method2() {
    let width = this.canvas.width;
  }
}

Как я могу объявить их один раз и использовать в двух методах.Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 25 апреля 2019

Вы объявляете переменные вне класса, а не определяете их как свойства класса

export class Foo {
  private x;
  private y;
  constructor() {}
  method1() {
    this.x;
  }

  method2() {
    this.x;
  }
}
1 голос
/ 25 апреля 2019

К объявленным переменным могут обращаться x и y, без this.

Однако, если вы хотите, чтобы ваши переменные были определены в классе и определены внутри класса, вы должны создатьваши переменные как поля класса:

export class Foo {
  private x: number;
  private y: number;

  constructor() {}

  public method1() {
    this.x;
  }

  public method2() {
    this.x;
  }
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...