gpt4 book ai didi

实现通用接口(interface)的通用类的 typescript 定义

转载 作者:搜寻专家 更新时间:2023-10-30 21:07:26 25 4
gpt4 key购买 nike

我有一个 typescript 定义文件,其界面如下

   interface IStreamHandler<E> {
stopStream(): void;
process(E : E);
onReady(bReady : boolean):void;
}

我想实例化它,所以我声明了一个变量

 declare var StreamHandler: IStreamHandler<E>; 

但这是不允许的。

我如何创建定义语法才能做到这一点?

   var sh = new StreamHandler<Animal>(); 
sh.process(E: Animal){//code impl}

最佳答案

问题在于,对于接口(interface),您需要静态接口(interface)和实例接口(interface)的实现,以及构造函数 (new())。这会起作用:

interface IStreamHandler_Static {
new<E>():IStreamHandler<E>;
}
interface IStreamHandler<E> {
stopStream(): void;
process(e : E);
onReady(bReady : boolean):void;
}

declare var StreamHandler: IStreamHandler_Static;

但如果是外部的,最好完全声明类。

interface IStreamHandler<E> {
stopStream(): void;
process(e : E);
onReady(bReady : boolean):void;
}

declare class StreamHandler<E> implements IStreamHandler<E> {
constructor() {}
stopStream(): void;
process(e : E);
onReady(bReady : boolean):void;
}

关于实现通用接口(interface)的通用类的 typescript 定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29906143/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com