Typescript: значение переменной не определено, несмотря на инициализацию в конструкторе - PullRequest
0 голосов
/ 25 февраля 2019

У меня есть num1: number, затем

constructor(){
  ...
  this.num1 = 0;
}

внутри класса.

Но при входе в функцию console.log(this.num1) или console.log(typeof this.num1) я получаю undefined оба раза.

Почему значение моей переменной здесь не определено?

1 Ответ

0 голосов
/ 26 февраля 2019

Как уже упоминалось в комментариях других, вероятным виновником является то, что this не то, что вы ожидаете в функции.

Если у вас есть такой класс:

class Foo {
    public myValue: number;
    constructor() { this.myValue = 0; }
    barOne() { console.log(this.myValue); }
    barTwo = () => { console.log(this.myValue); }
}

, то barOne и barTwo будут вести себя по-разному, когда используются обратные вызовы задницы объектом, внешним по отношению к классу.

Это тот случай, когда используется метод экземпляра класса в качестве обратного вызова для кнопки, как в вашем случае.

Полезно углубиться в то, как this работает в javascript и typcript (javascript ведет себя так же, как typcript, если доступен ecmascript 6), и есть много хороших статей об этом.

Но простое решение состоит в том, чтобы использовать «функции стрелок», как я это делал с методом barTwo, описанным выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...