提问人:tjbindseil 提问时间:6/23/2023 更新时间:6/23/2023 访问量:32
如何为具有大量泛型(打字稿)的类制作别名?
How to make an alias for a class that has a lot of generics (typescript)?
问:
我正在将 socket.io 库用于打字稿。每当在代码中引用 or 类型时,都需要四个泛型参数。有关完整示例,请参阅文档,但相关部分是这样的:Socket
Server
const io = new Server<
ClientToServerEvents,
ServerToClientEvents,
InterServerEvents,
SocketData
>();
套接字也是如此。
我的问题是,我如何别名这个长类型?而且,这甚至可能吗?我尝试了以下方法:
type
关键词:
export type DWFServer = Server<ClientToServerEvents, ServerToClientEvents, InterServerEvents, SocketData>
interface
关键词:
export interface DWFServer extends Server<ClientToServerEvents, ServerToClientEvents, InterServerEvents, SocketData> {}
class
关键词:
export class DWFServer extends Server< ClientToServerEvents, ServerToClientEvents, InterServerEvents, SocketData > {}
在 type 和 interface 关键字的情况下,我收到以下编译错误:
TS2693: 'DWFServer' only refers to a type, but is being used as a value here.
在 class 关键字的情况下,我没有遇到编译失败,但实例化别名类时出现运行时错误:
TypeError: Class constructor Server cannot be invoked without 'new'
还值得注意的是,类型别名在另一个包中,我直接将这些类型导出到该包的index.ts文件中。
有谁知道我如何使这个别名工作?
答: 暂无答案
上一个:调用函数类型别名而不是函数
下一个:如何使类型别名对派生类不可见?
评论
export function createServer() { return new Server<ClientToServerEvents, ServerToClientEvents, InterServerEvents, SocketData>(); }
Server
Socket