Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

534
Visualizações
Error de TypeScript: la propiedad 'X' no existe en el tipo 'Ventana'

He agregado TS a mi aplicación React/Redux.

Uso un objeto de window en mi aplicación de esta manera:

 componentDidMount() { let FB = window.FB; }

TS arroja un error:

Error de TypeScript: la propiedad 'FB' no existe en el tipo 'Ventana'. TS2339

Quiero corregir el error.

1 (no funciona)

 // Why doesn't this work? I have defined a type locally type Window = { FB: any } componentDidMount() { let FB = window.FB; } // TypeScript error: Property 'FB' does not exist on type 'Window'. TS2339

2 (corrige el error)

Encontré la respuesta aquí https://stackoverflow.com/a/56402425/1114926

 declare const window: any; componentDidMount() { let FB = window.FB; } // No errors, works well

¿Por qué la primera versión no funciona, pero la segunda sí, aunque no especifico la propiedad FB en absoluto?

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

¿Por qué declare const window: any; ¿trabaja?

Porque declaras una variable local de tipo any . Tener algo de tipo any esencialmente desactiva la verificación de tipos para la window para que pueda hacer cualquier cosa con él. Realmente no recomiendo esta solución, es realmente mala.

¿Por qué no funciona el type Window = { FB: any } ? Defina un tipo Window . Este tipo, si se define en un módulo, no tiene nada que ver con el tipo del objeto de window global, es solo un tipo que se llama Window dentro de su módulo.

La buena solución Para ampliar la window debe ampliar la interfaz global de la Window . Puedes hacer esto así:

 declare global { interface Window { FB:any; } } let FB = window.FB; // ok now

Tenga en cuenta que esta extensión estará disponible en todo su proyecto, no solo en el archivo en el que lo define. Además, si FB tiene definiciones, podría considerar escribirlo un poco mejor ( FB: typeof import('FBOrWhateverModuleNameThisHas') )

over 4 years ago · Santiago Trujillo Relatório

0

Hay algunas maneras de resolver este problema:

Algunos ejemplos:

1-) Hazlo en yeso:

 (window as any).X

2-) Pon el siguiente código en el archivo react-app-env.d.ts

 interface Window { X?: { Y?: { ....... } } }
over 4 years ago · Santiago Trujillo Relatório

0

puede resolver el problema fácilmente sin necesidad de declaración

 window["FB"]
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda