Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Generics 强制泛型在TypeScript中实现属性(对泛型的约束)_Generics_Typescript - Fatal编程技术网

Generics 强制泛型在TypeScript中实现属性(对泛型的约束)

Generics 强制泛型在TypeScript中实现属性(对泛型的约束),generics,typescript,Generics,Typescript,我想强制TypeScript中的泛型实现属性。 我目前的代码是: interface IEventHandler<TArgs> { (args: TArgs): void } interface ISubscribable<THandlerType> { bind(fn: THandlerType): void; unbind(fn: THandlerType): void; } interface IEvent<TArgs>

我想强制TypeScript中的泛型实现属性。 我目前的代码是:

interface IEventHandler<TArgs>
{
    (args: TArgs): void
}


interface ISubscribable<THandlerType>
{ 
    bind(fn: THandlerType): void;

    unbind(fn: THandlerType): void;
}

interface IEvent<TArgs> extends ISubscribable<IEventHandler<TArgs>>
{
}
接口IEventHandler
{
(args:TArgs):无效
}
接口是可订阅的
{ 
绑定(fn:THandlerType):无效;
解除绑定(fn:THandlerType):无效;
}
接口IEvent扩展是可订阅的
{
}
类似于
接口IEventHandler,其中targets:has\u property\u sender
。我知道TypeScript哪里不存在,所以也许我可以用另一个界面来解决问题

这在TypeScript中可能吗

编辑:
. 我不知道它是否可以优化。

您可以在Typescript中使用(“通用约束”部分),例如:

interface has_property_sender {
    sender: Object;
}

interface MyArgs extends has_property_sender {
    property: Object;
}

interface IEventHandler<TArgs extends has_property_sender>
{
    (args: TArgs): void
}
接口具有\u属性\u发送方{
发送者:对象;
}
接口MyArgs extends具有\u属性\u发送方{
财产:客体;
}
接口IEventHandler
{
(args:TArgs):无效
}

谢谢。几个小时后,我设法做到了这一点,你的答案是正确的(这是我在TypeScript上的第三天)。我已经尝试过你的方法,但可以让发送者是泛型类型。如果你有时间,请你用一只眼睛看看我的代码的底部是否可以优化。有一些带有问号的评论。@Makla-我已经检查了你的代码,现在还没有找到“删除编辑”的方法。。。