Как проверить, объявлен ли класс в Typescript?

В Javascript есть удобный способ проверить, существует ли класс (или любой другой) в глобальной области видимости:

typeof SomeUndeclaredOne === 'undefined'

Этот метод не работает в машинописном тексте, потому что он вызывает ошибку компиляции:

error TS2304: Cannot find name 'SomeUndeclaredOne'

Итак, мой вопрос: как проще всего проверить, существует ли класс в машинописном тексте? Я ищу общий способ, который работает не только в браузерах, но и в других средах (например, node.js или других средах, в которых нет глобального объекта), а также работает с популярными модульными системами (такими как ESModules, CommonJS).

Спасибо заранее за любые советы.

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

cyberbrain 10.04.2022 18:44

Наиболее очевидное использование этого — машинописный код, который ведет себя по-разному в зависимости от среды. Например, я хочу написать программу, которая выполняет определенные действия с классом Buffer Node.js, но при этом работает в браузерах (где нет класса Buffer)

Alexander Paschenko 10.04.2022 19:10
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Создание собственной системы электронной коммерции на базе Keystone.js - настройка среды и базовые модели
Создание собственной системы электронной коммерции на базе Keystone.js - настройка среды и базовые модели
Прошлая статья была первой из цикла статей о создании системы электронной коммерции с использованием Keystone.js, и она была посвящена главным образом...
0
2
23
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете declare класс с TypeScript, чтобы избавиться от ошибки.

declare class SomeUndeclaredOne {}
console.log(typeof SomeUndeclaredOne === "undefined")

Большое спасибо! Это точный и полный ответ на мой вопрос.

Alexander Paschenko 10.04.2022 19:11

Другие вопросы по теме