Socket.io: error de compilación de mecanografiado

Creado en 6 nov. 2020  ·  7Comentarios  ·  Fuente: socketio/socket.io

Tú quieres:

  • [x] informar un error
  • [] solicitar una función

Comportamiento actual

Tengo algunos problemas para compilar mi código de mecanografiado a javascript.
La compilación falla debido a un error de tipo en namespace.d.ts y socket.d.ts。La clase Namespace y Socket extiende EventEmitter. Sin embargo, anulan la función 'emitir' y la firma no es compatible con la función de emisión del EventEmitter.

¿Hay alguna forma de evitarlo?

Pasos para reproducir (si el comportamiento actual es un error)

A continuación se muestra mi configuración de tsconfig:

{
    "compileOnSave": true,
    "compilerOptions": {
        "outDir": "./dist",
        "lib": ["es5", "es6"],
        "target": "es3",
        "module": "commonjs",
        "moduleResolution": "node",
        "experimentalDecorators": true,
        "emitDecoratorMetadata": true,
        "allowSyntheticDefaultImports": true,
    },
    "include": ["./src/**/*"],
}

Aquí están las dependencias del proyecto:

"dependencies": {
    "debug": "^3.1.0",
    "koa": "^2.13.0",
    "socket.io": "^3.0.0"
  },
  "devDependencies": {
    "@types/koa": "^2.11.6",
    "@types/node": "^14.14.6",
    "supervisor": "^0.12.0",
    "typescript": "^4.0.5"
  }

cuando ejecuto: 'tsc', aparece el siguiente error:

node_modules/socket.io/dist/namespace.d.ts(89,5): error TS2416: Property 'emit' in type 'Namespace' is not assignable to the same property in base type 'EventEmitter'.
  Type '(ev: string, ...args: any[]) => Namespace' is not assignable to type '(event: string | symbol, ...args: any[]) => boolean'.
    Type 'Namespace' is not assignable to type 'boolean'.
node_modules/socket.io/dist/socket.d.ts(84,5): error TS2416: Property 'emit' in type 'Socket' is not assignable to the same property in base type 'EventEmitter'.
  Type '(ev: string, ...args: any[]) => this' is not assignable to type '(event: string | symbol, ...args: any[]) => boolean'.
    Type 'this' is not assignable to type 'boolean'.
      Type 'Socket' is not assignable to type 'boolean'.

Preparar

  • SO: Windows
  • versión de socket.io: 3.0.0
bug

Comentario más útil

¿Puedes lanzar esta versión lo antes posible?

¡O apuntemos directamente a la rama fix/typescript-emit !

Todos 7 comentarios

¡Teniendo el mismo problema aquí!

El mismo problema.
Debian, socket.io 3.0

Gracias, de hecho pude reproducir el problema.

Esto debería solucionarse en https://github.com/socketio/socket.io/commit/50671d984a81535a6a15c704546ca7465e2ea295.

¿Puedes lanzar esta versión lo antes posible?

¡O apuntemos directamente a la rama fix/typescript-emit !

Esto parece digno de una versión 3.0.1.

¡3.0.1 ya está disponible!

He actualizado el ejemplo de TypeScript aquí: https://github.com/socketio/socket.io/tree/master/examples/typescript

¡Gracias!

¿Fue útil esta página
0 / 5 - 0 calificaciones