[英]typescript definition implementing a generic class that implements generic interface
我有一個帶有類似界面的打字稿定義文件
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}
問題是,對於接口,您需要實現靜態和實例接口以及構造函數( 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 Animals {
walk():void
}
class Cat {
walk =():void =>{
alert("I am walking");
}
}
interface IStreamHandler<E extends Animals> {
stopStream(): void;
process(E : E);
onReady(bReady : boolean):void;
}
var animal:Animals = new Cat();
var sh = <IStreamHandler<Cat>>{};
sh.process=(animal)=>{
animal.walk();
}
sh.process(animal);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.