React Typescript socket.io-client io.connect 上的 Typescript 错误

xyz*_*242 3 socket.io typescript reactjs

我正在使用 React Typescript 和 socket.io-client 4.0.0 和 @types/socket.io-client 3.0.0。就代码而言,一切都很好:

socket = io.connect(`ws://${WS_DOMAIN}:${WS_PORT}`, { transports: ["websocket"] });
Run Code Online (Sandbox Code Playgroud)

我在 io.connect 上收到以下错误:

any
Property 'connect' does not exist on type '{ (opts?: Partial<ManagerOptions &
SocketOptions> | undefined): Socket<DefaultEventsMap, DefaultEventsMap>; (uri: string, 
opts?: Partial<...> | undefined): Socket<...>; (uri: string | Partial<...>, opts?: 
Partial<...> | undefined): Socket<...>; }'.ts(2339)
Run Code Online (Sandbox Code Playgroud)

我希望错误消失,但当然,我不知道如何消除它。这是我的 tsx 文件中唯一的错误。

值得一提的是,这是一个基于类的组件。IO 的导入方式如下:

import { io } from 'socket.io-client';
Run Code Online (Sandbox Code Playgroud)

并且类型在类初始化之前分配:

let socket: any;
Run Code Online (Sandbox Code Playgroud)

xyz*_*242 5

查看文档我注意到IO连接的使用方式如下:

io(`ws://${WS_DOMAIN}:${WS_PORT}`, { transports: ["websocket"] });
Run Code Online (Sandbox Code Playgroud)

所以没有这个io.connect部分

这也解决了我的问题。希望这可以帮助可能遇到类似问题的人。


Joa*_*oan 5

我会安装“@types/socket.io”,然后在客户端,像这样导入:

import * as io from "socket.io-client";
const socket = io.connect("http://localhost:4000");
Run Code Online (Sandbox Code Playgroud)

它为我清除了错误。