Socket.io: erro de compilação de texto digitado

Criado em 6 nov. 2020  ·  7Comentários  ·  Fonte: socketio/socket.io

Você quer:

  • [x] relatar um bug
  • [] solicitar um recurso

Comportamento atual

Eu tenho alguns problemas em compilar meu código de script para javascript.
A compilação falha devido a um erro de tipo em namespace.d.ts e socket.d.ts。A classe Namespace e Socket estende EventEmitter. No entanto, eles substituem a função 'emit' e a assinatura não é compatível com a função emit do EventEmitter.

Existe alguma maneira de contornar isso?

Etapas para reproduzir (se o comportamento atual for um bug)

Abaixo está minha configuração de tsconfig:

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

Aqui estão as dependências do projeto:

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

quando executo: 'tsc', recebo o seguinte erro:

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

Configuração

  • SO: Windows
  • versão socket.io: 3.0.0
bug

Comentários muito úteis

Você pode lançar esta versão o mais rápido possível?

Ou vamos segmentar fix/typescript-emit branch diretamente!

Todos 7 comentários

Estou tendo o mesmo problema aqui!

O mesmo problema.
Debian, socket.io 3.0

Obrigado, eu realmente poderia reproduzir o problema.

Isso deve ser corrigido por https://github.com/socketio/socket.io/commit/50671d984a81535a6a15c704546ca7465e2ea295.

Você pode lançar esta versão o mais rápido possível?

Ou vamos segmentar fix/typescript-emit branch diretamente!

Isso parece digno de uma versão 3.0.1.

3.0.1 lançado!

Atualizei o exemplo do TypeScript aqui: https://github.com/socketio/socket.io/tree/master/examples/typescript

Obrigado!

Esta página foi útil?
0 / 5 - 0 avaliações