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

227
Views
¿Cómo uso la información de escritura de TypeScript de un paquete de Node.js?

He leído un montón de variaciones diferentes de esta misma pregunta, pero simplemente no puedo entenderlo. Estoy usando el módulo websocket (que he usado muchas veces antes sin TypeScript) y no sé cómo escribir mis variables.

Tengo una función que acepta un objeto WebSocketConnection , pero cuando le doy el tipo WebSocketConnection , aparece "Cannot find name 'WebSocketConnection'" de TypeScript.

Instalé el paquete @types/websocket y puedo ver el archivo index.d.ts con todas las definiciones de tipo ubicadas en ./node_modules/@types/websocket/index.d.ts en relación con mi tsconfig.json expediente...

Intenté agregar la opción "typeRoots" al archivo tsconfig.json , así como también "types" . He probado muchas combinaciones de valores pero, por lo que puedo decir, dejarlos fuera por completo es una mejor apuesta, así que también lo he intentado. También probé muchas variaciones de import de datos tanto del archivo .d.ts como del propio paquete, sin suerte, por supuesto.

Intenté usar /// <reference path="node_modules/@types/websocket/index.d.ts" /> también sin suerte.

Busqué en el archivo .d.ts y encontré una declaración muy clara de una interfaz llamada IStringified que se veía así:

 export interface IStringified { toString: (...args: any[]) => string; }

Así que traté de acceder a IStringified y sigo recibiendo el mismo error "Cannot find name 'IStringified'" .

Probablemente estoy siendo realmente tonto y me estoy perdiendo algo claramente obvio, ¡pero cualquier sugerencia o consejo sería muy apreciado! ¿Qué demonios estoy haciendo mal?

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

0

Los tipos de paquetes instalados no están disponibles globalmente. Deben importarse en cada archivo para poder utilizarlos. No te metas con typeroots o triple slash, eso solo empeorará las cosas.

En este caso particular, el módulo exporta una clase de connection , que es probablemente lo que desea. Su nombre desafortunado significa que para que parezca el constructor de clase que realmente es, probablemente debería cambiar el nombre en la importación:

 import { server as WebSocketServer, connection as WebSocketConnection, } from 'websocket'

Y ahora puedes hacer:

 const wsServer = new WebSocketServer({ httpServer: server }); wsServer.on('request', function(request) { var connection = request.accept('echo-protocol', request.origin); doSomethingWithWsConnection(connection) // works }); function doSomethingWithWsConnection(connection: WebSocketConnection) { //... }

Ejemplo de typesafe en el patio de recreo de TS


Así que traté de acceder a IStringified y sigo recibiendo el mismo error "No se puede encontrar el nombre 'ISringified'".

Importa el tipo, luego usa el tipo:

 import { IStringified } from 'websocket' const foo: IStringified = { toString: () => 'asdf' }

Patio de juegos

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!