Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

210
Views
¿Cómo acceder a Textencoder como global en lugar de importarlo desde el paquete de utilidad?

Estoy usando Node v18.0.0 con TypeScript y parece que la clase TextEncoder es global .

Desafortunadamente, este código const textEncoder = new TextEncoder(); no es válido porque no sabe acerca de la clase. Tendré que importar el paquete util para que funcione, de lo contrario aparece el error

No se puede encontrar el nombre 'TextEncoder'. ¿Quiso decir 'textEncoder'?ts(2552)

Estoy usando los paquetes "@types/node": "17.0.23" y "typescript": "4.6.3" . El archivo tsconfig.json

 { "compilerOptions": { "baseUrl": ".", "declaration": true, "esModuleInterop": true, "lib": [ "esnext" ], "module": "commonjs", "outDir": "build", "resolveJsonModule": true, "strict": true, "target": "es2019" }, "include": [ "./**/*.ts" ], "exclude": [ "./build" ] }

¿Alguien sabe cómo arreglar esto? ¿Tengo que usar algunos paquetes adicionales o modificar mi configuración de TS?

Por favor, hágamelo saber si necesita más información!

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Esto parece una inconsistencia (al menos) entre la documentación de Node.js (y el tiempo de ejecución) y el paquete @types/node en DefinitelyTyped. Este problema es muy similar aeste con URL , que desde entonces se solucionó agregando una declaración global en url.d.ts . Puede valer la pena abrir un problema (y hacer una PR).

Como dices, TextEncoder definitivamente es global (tanto la documentación como una prueba rápida nos lo dicen), pero @types/node/globals.d.ts no lo tiene. @types/node/utils.d.ts lo tiene (como indicó), e incluso tiene el comentario "La clase TextEncoder también está disponible en el objeto global". pero... no lo es (a diferencia de URL , que [ahora] lo es).

Si el código que está escribiendo es específico de Node.js, solo haría la importación y no me preocuparía.

Pero si se supone que el código que está escribiendo se dirige tanto a Node.js como a los navegadores, obviamente esa no es una opción. Una solución alternativa mencionada en el hilo del problema de URL es agregar "dom" a su configuración de configuración de lib , pero eso significa que todo el DOM se agrega a su espacio de nombres global.

Alternativamente, hasta que/a menos que se actualicen los tipos, puede declarar el global usted mismo. En la raíz de tu proyecto:

whatever.d.ts :

 import { TextEncoder as _TextEncoder } from "node:util"; declare global { var TextEncoder: typeof _TextEncoder; }

No obtiene información emergente útil cuando hace new TextEncoder( , pero funciona, y obtiene información útil para sus métodos, etc.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!