首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于TypeScript中泛型构造函数引用的问题

问关于TypeScript中泛型构造函数引用的问题
EN

Stack Overflow用户
提问于 2019-04-15 19:19:50
回答 1查看 21关注 0票数 1

请考虑以下代码:

代码语言:javascript
复制
abstract class AbstractBusEvent { }

interface EventBusListener<T extends AbstractBusEvent> {
    (event: T): void;
}

class EventBus {
    public register<T extends AbstractBusEvent>(eventConstructor: { new (...args: any[]): T }, 
        listener: EventBusListener<T>): void {
    }
}

而现在

代码语言:javascript
复制
class TempEvent extends AbstractBusEvent {}
class MyEvent extends AbstractBusEvent {}

const bus: EventBus = new EventBus();
bus.register(TempEvent, (e: MyEvent)=>{});//LINE X

问题是,在X行,我没有得到任何错误,尽管如你所见,它是错误的。我的错误在哪里?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-15 19:29:43

您的TempEvent和MyEvent是相同的。这是没有任何区别的。因此,没有类型差异是正确的,因此您可以在register方法中混合这两种类型。然而,如果你添加了成员字段,那么if编译器将会报错,例如

代码语言:javascript
复制
class TempEvent extends AbstractBusEvent {
    props: string;
}
class MyEvent extends AbstractBusEvent {
    props: number;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55688068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档