【问题标题】:How to use socket.IO client type definitions for Typescript?如何为 Typescript 使用 socket.IO 客户端类型定义?
【发布时间】:2019-12-03 00:14:21
【问题描述】:

我已经使用 SocketIO 客户端安装了 Typescript 定义

npm install @types/socket.io-client

但在 VS Code 中我仍然会遇到类型错误:

let socket: SocketIOClientStatic = io() 

“Socket”类型缺少“SocketIOClientStatic”类型的以下属性:protocol、Socket、Manager、managersts(2739)

所有这些属性在 intellisense 或他的 socketIO 文档中都没有作为选项提及...在创建 io() 时不需要它们

如何将 Typescript 与 SocketIO 客户端一起使用?

【问题讨论】:

    标签: typescript socket.io typescript-typings


    【解决方案1】:

    在客户端版本 4.x 上

    import { io, Socket } from "socket.io-client";
    

    【讨论】:

      【解决方案2】:

      我想扩展 Oblosys 的答案:

      如果esModuleInterop 标志处于活动状态并且您收到类似的错误消息

      这个模块是用'export ='声明的,只能被使用 使用“esModuleInterop”标志时默认导入。

      然后使用as-Syntax 进行导入:

      import * as io from 'socket.io-client';
      
      const socket: SocketIOClient.Socket = io('http://localhost');
      

      【讨论】:

        【解决方案3】:

        io 函数的返回类型为 SocketIOClient.Socket 而不是 SocketIOClientStatic。如果您使用该类型,或者完全省略签名,它会按预期工作:

        import io from 'socket.io-client';
        
        const socket: SocketIOClient.Socket = io('http://localhost');
        const anotherSocket = io('http://localhost');
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-12-03
          • 2021-08-08
          • 2014-04-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-04-02
          • 2012-02-20
          相关资源
          最近更新 更多