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存储类型键入为泛型。
谢谢!!
不会<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)