@Kyki4

Зачем нужен восклицательный знак при объявлении переменной TS?

Я читал эту статью и наткнулся там на такой код:

let exampleFunc!: (instance: Example) => number;

class Example {
  static #accessCount = 0;
  #initial: number;
  constructor(input: number) {
    this.#initial = input * 2;
  }

  static {
    exampleFunc = (instance: Example) => {
      Example.#accessCount++;

      return instance.#initial
    }
  }
}

if (exampleFunc) {
  exampleFunc(new Example(2)); // 4
}


и не могу понять, зачем нужен "!" при объявлении exampleFunc:
let exampleFunc→!←: (instance: Example) => number;

тк он явно не является частью названия переменной, также не думаю, что он говорит о том, что переменная не может быть равна null | undefined:
  • Вопрос задан
  • 3653 просмотра
Решения вопроса 2
Lynn
@Lynn
nginx, js, css
Он говорит компилятору TS, что не нужно ругаться на неинициализированную переменную. Что на самом деле она будет инициализирована каким-то способом который TS не может отследить. Например, в данном случае она инициализируются внутри static блока, а TS видимо этого пока не понимает.
Ответ написан
Комментировать
yarkov
@yarkov
Помог ответ? Отметь решением.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы