typescript - 打字稿从实例中提取泛型
问题描述
我有一个使用泛型的类。
class Event<P> {
constructor( public eventName: string ) {}
createPayload( payload: P ) {
return payload
}
}
我希望 TypeScript 从实例中推断出使用的泛型,这样我就不必重新定义类型。
const attackEvent = new Event<{ power: number }>("attack")
由于我在这里定义了泛型,我希望从实例中推断出它:attackEvent
我有一个需要通用的服务,这里是一个预期用途的例子:
pubSubService.publish<T>()
这是我想从中推断出泛型的理想方式Event
:
pubSubService.publish< attachEvent >( attackEvent.createPayload({ po}) )
这不起作用,我明白为什么。我不明白如何使这样的工作。
解决方案
一种解决方案是在构造函数中使用泛型参数,因此您必须在构造时传入有效负载。
class Event<P> {
public constructor(private payload: P, public eventName: string ) {}
public updatePayload(payload: P): void {
this.payload = payload;
return this.payload;
}
}
const attackEvent = new Event({ power: 10 }, "attack");
推荐阅读
- android - 如何有效地存储 pdf 的第一页并将其显示为 recyclerview 中的缩略图?
- python - 错误:在 heroku 上部署应用程序时,src refspec master 不匹配任何内容
- r - 如何汇总多列的值?
- makefile - 无法找到或加载主类 org.antlr.Tool
- html - 有没有办法找出网页上的按钮是否有热键?
- javascript - Vime.js(角度)自定义播放器设置在移动设备上回退到默认值,但在桌面上工作
- java - Eclipse 2021-06 更新:找不到我的工作区
- go - 使用 dbus-codegen-go 导出 dbus 服务
- reactjs - 在 ReactJS 中,如何拦截(仅)双击?
- php - php 与下划线完全匹配的字符串