我正在尝试使用typescript实现通用discrete interval encoding tree。这里的通用意味着我希望允许区间端点是任意类,它扩展了一个简单的接口,指定离散线性顺序,强制存在两个方法成员np.where((arr[:,0] > ts - 1800) & (arr[:,0] < ts + 1800))
和next
。因为我想输入我认为需要通用接口的方法(所有代码都可以在jsfiddle中找到):
lessThan
然后我用数字实例化了这个(好吧,它不是离散的,但把它想象为整数; - )
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
但是这里出现了麻烦:我无法定义类型别名并使用它:
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)
我在这里缺少什么?
答案 0 :(得分:1)
试试这个:
const aaa = new DLOinterval<number, DLOnumber>(new DLOnumber(3), new DLOnumber(5), null);
答案 1 :(得分:0)
您无需从DLOinterval
类创建类型,您可以按如下方式直接使用它:
const ggg = new DLOinterval<number, DLOnumber>( new DLOnumber(3), new DLOnumber(5), null);
答案 2 :(得分:0)