Estoy reescribiendo el código JavaScript ES5 en TypeScript y tengo un código como este:
var is_browser = (function() { try { return this === window; } catch (e) { return false; } })(); Lo primero es que tengo un error de TS que this implícito en cualquier tipo. Pero no creo que importe mucho porque el código no funcionará ya que TypeScript está usando "use strict" para cada archivo, por lo que this estará undefined .
Entonces, ¿cuál es la forma correcta de probar si el código JavaScript se ejecuta en el navegador?
Esta solución siempre debería funcionar, sin embargo, el contexto global está contaminado.
var is_browser = Object.getPrototypeOf( Object.getPrototypeOf(globalThis) ) !== Object.prototypeSi estás en la ventana del navegador no debería estar indefinido:
var is_browser = typeof window !== 'undefined'; console.log(is_browser)