Проверьте, существует ли свойство для глобального или оконного объекта в TypeScript - PullRequest
1 голос
/ 09 мая 2020

Я хочу преобразовать этот код JavaScript в TypeScript:

if (!window.INITIALIZED) {
  init();
  window.INITIALIZED = true;
}
runCode();

Объект window набран в TypeScript, и компилятор выдаст ошибку, сообщающую, что свойство INITIALIZED не существуют на типе 'Window & typeof globalThis'.

Как я могу правильно исправить это, не отключая функции TypeScript или игнорируя проверку типа для этих строк?

1 Ответ

2 голосов
/ 09 мая 2020

Вы можете заставить TS распознать его как допустимое свойство окна, добавив его в интерфейс Window:

declare global {
    interface Window {
        INITIALIZED: boolean | undefined;
    }
}
if (!window.INITIALIZED) {
  init();
  window.INITIALIZED = true;
}
runCode();

Тем не менее, присвоение свойствам глобального объекта - это бит запах кода, когда в этом нет необходимости. Если это вообще возможно, рассмотрите возможность использования вместо этого обычной переменной.

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