Как использовать методы класса в качестве инициализаторов свойств? - PullRequest
0 голосов
/ 13 апреля 2020

Я не могу инициировать свойство в конструкторе через закрытый метод.

export class Storage {
  /**
   * Complains:
   * TS2564: Property 'meta' has no initializer and is not definitely assigned in the constructor.
   */
  private meta: {
    ver: number
  }

  constructor() {
    this.initLocalData()
  }

  private initLocalData() {
    this.meta = { ver: 0 }
  }
}

Я хочу повторно использовать инициализатор, чтобы уменьшить размер кода. Как исправить предупреждение?

Ответы [ 2 ]

0 голосов
/ 13 апреля 2020

Почему бы не использовать инициализатор вместо повторения свойства meta?

export class Storage {
  #meta = { ver: 0 }
}

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

export class Storage {
  private meta = { ver: 0 }
}
0 голосов
/ 13 апреля 2020

Вы можете сделать initLocalData publi c и просто вызвать его напрямую, вместо использования конструктора.

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