Мне нужно определить, работает ли мой скомпилированный код среды, определяет объект Reflect
и метод Reflect.getMetadata
. Неизвестно заранее, когда скомпилированный код будет запущен. Это может быть браузер, nodeJS или произвольная среда выполнения V8JS.Проверьте, существует ли встроенный тип в TypeScript?
Я в настоящее время проверки свойств известных глобальных объектов, но это воняет плохо:
if (
typeof ((window || global) as any).Reflect === "object" &&
typeof ((window || global) as any).Reflect.getMetadata === "function"
) {
// the Reflect.getMetadata method is defined
// ...
}
Есть ли более элегантный и пуленепробиваемый способ проверки на наличие этих объектов? TypeScript выдает ошибку, если я просто проверяю наличие Reflect
.