您能帮我创建类“ MyClass”吗? M类应该是Newable并实现IMyInterface
export interface IMyInterface<A>
{
SomeData : A;
}
export class MyClass<T,M inherits IMyInterface<T> and new() >
{
list = new Array<M>();
privete Creator()
{
const obj = new M();
obj.SameData = 'Hello data';
list.push( obj );
}
}
答案 0 :(得分:0)
认为您正在寻找类似的东西...
export interface IMyInterface<A> {
SomeData: A;
}
export class MyClass<T, M extends IMyInterface<T>> {
private list: M[] = [];
constructor(private constructorFunction: {new(): M; }) {
}
public add(item: T): void {
const obj = new this.constructorFunction();
obj.SomeData = item;
this.list.push(obj);
}
}
export class MyItem implements IMyInterface<string> {
public SomeData: string = '';
}
const collection = new MyClass<string, MyItem>(MyItem);
collection.add('Hello data');
我已经对您的伪代码进行了调整,以便它可以实际编译并执行我认为您在该问题中针对的目标。要注意的重要一点是TypeScript中的类型在运行时没有表示形式,因此您无法执行new T()
。相反,您需要为类型为{ new(): M; }
的类传递构造函数。然后,您可以使用此值进行new X()
来获得扩展接口的对象。