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

221
Visualizações
¿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 Respostas
Responde à pergunta

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 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