Почему закрытый конструктор TS arg не приводит к свойству контекста 'this'?Работает в примерах!Это зависит от версии TS?и что такое VS Code исправить? - PullRequest
0 голосов
/ 13 февраля 2019

Я делаю это в контексте приложения Ionic 3 и конструктора страницы.

Если у меня есть такой код:

import { Events } from 'ionic-angular';
const REFRESH = 'refresh';
export class JobsPage {
  constructor (private events:Events) {
    events.subscribe(REFRESH, ()=> {
      ...
    });
  }
  ionViewWillUnload():void {
    this.events.unsubscribe(REFRESH);
  }
}

Код VS предоставляет лампочкус исправлением (это не тот же код, что и выше ... Я сократил решение, но, тем не менее, показываю ту же проблему без this.events и контекстного меню, к которому вы получаете доступ).

VS Code add index signature

Если я выберу добавить подпись индекса для свойства 'events', он добавляет следующий фрагмент кода после export class JobsPage { и до constructor.

[x: string]: any;

и предупреждения исчезают.

  1. Что именно это значит?

  2. Я знаю, что могу сделатьаргумент конструктора для событий public и получить доступ к this.events, (никакой модификатор доступности тоже не отрицает это - так же, как private. Я мог бы также объявить свойство класса private events2:Events и в конструкторе сказать this.events2 = events), но я виделвидео, например , это , где разрешены аргументы частного конструктора и доступ к this.events, согласно следующему снимку экрана.

Снимок экрана со связанного видео Youtube @ 4: 51

this.events with private constructor

Этокаким-то образом до версии TypeScript?

Я использую:

  • TypeScript 2.4.2
  • VS Code (для Mac) Версия 1.31.0

Версия TypeScript, которую я использую, взята из VSCode IDE

Typescript Version

VS Кодовая версия для Mac

VS Code Version

...