[英]Typescript: generic interface, interface functions and class type parameters
我正在嘗試使用Typescript實現通用的離散間隔編碼樹 。 這里的泛型意味着我想允許區間端點為任意類,該類擴展了一個簡單的接口,該接口指定了離散的線性順序,從而強制了兩個方法成員next
和lessThan
的存在。 因為我想輸入方法,所以我假設我需要一個通用接口(所有代碼都可以在jsfiddle中找到):
interface DiscreteLinearOrder<T> {
next = () => T;
lessThan = (y: T) => Boolean;
}
然后我用數字實例化了這個(好吧,它不是離散的,而是將其視為整數;-)
class DLOnumber implements DiscreteLinearOrder<number> {
private value: number;
constructor(x: number) { this.value = x; }
next = () => { return(this.value + 1); };
lessThan = (y: number) => { return(this.value < y); };
getValue = () => { return(this.value.toString()); }
}
到這里為止,它運行正常,並且運行類似
const bar = new DLOnumber(5);
解決了。
有了這個,我計划提供一個DLOinterval
兩個參數的DLOinterval
類,其中一個擴展了離散線性順序接口:
class DLOinterval<T, U extends DiscreteLinearOrder<T>> {
private start: U;
private end: U;
private data: any;
constructor(s: U, e: U, d: any) {
this.start = s;
this.end = e;
this.data = d;
}
}
但是這里的麻煩開始了:我無法定義類型別名並使用它:
type NumberInterval = DLOinterval<number, DLOnumber>;
const ggg = new NumberInterval(new DLOnumber(3),new DLOnumber(5),null)
我也不能直接實例化它:
const aaa = new DLOinterval<number, DLOnumber>(new DLOnumber(3),new DLOnumber(5),null)
我在這里想念什么?
嘗試這個:
const aaa = new DLOinterval<number, DLOnumber>(new DLOnumber(3), new DLOnumber(5), null);
您不需要從DLOinterval
類創建類型,可以按如下所示直接使用它:
const ggg = new DLOinterval<number, DLOnumber>( new DLOnumber(3), new DLOnumber(5), null);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.