如何创建Typescript类的通用类型的新实例?

Joe*_*ugh 5 generics typescript

如何在Typescript中按预期进行以下工作?

export class ProxyObject<T> {
    private _dataObject:T;
    constructor(dataObject?:T) {
        if (dataObject) {
            this.dataObject = dataObject;
        } else {
            //create a new instance of the generic <T> here
            this.dataObject = <T> new Object();
        }
    }
    set dataObject(dataObject:T) {
        this._dataObject = dataObject;
    }
    get dataObject():T {
        return this._dataObject;
    }
}

export class ClassA {
   myCoolProperty = "My Cool Property";
}
Run Code Online (Sandbox Code Playgroud)

当我执行以下操作时:

export class MyObject extends ProxyObject<ClassA> {
}
Run Code Online (Sandbox Code Playgroud)

然后:

var obj = new MyObject();
obj.dataObject.myCoolProperty === undefined
Run Code Online (Sandbox Code Playgroud)

正如我所期望的,MyObject内部的dataObject上没有ClassA属性或函数。例如,我希望dataObject具有myCoolProperty。

我正在尝试编写一个ProxyObject类,该类在扩展时将DataObject存储类型键入为泛型。

谢谢!!

Pal*_*leo 0

不会<T> new Object()创建 的实例T。尝试这个:

class MyObject extends ProxyObject<ClassA> {
    constructor(dataObject?: ClassA) {
        if (dataObject) {
              super(dataObject);
          } else {
              //create a new instance of the generic <T> here
              super(new ClassA());
          }
    }
}
Run Code Online (Sandbox Code Playgroud)