【发布时间】:2015-04-03 17:15:55
【问题描述】:
如何在 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";
}
当我执行以下操作时:
export class MyObject extends ProxyObject<ClassA> {
}
然后:
var obj = new MyObject();
obj.dataObject.myCoolProperty === undefined
如我所料,MyObject 内的 dataObject 上不存在任何 ClassA 属性或函数。例如,我希望 dataObject 具有 myCoolProperty。
我正在尝试编写一个 ProxyObject 类,当扩展它的 DataObject 存储时,它被键入为泛型。
谢谢!!
【问题讨论】:
-
我的猜测是你需要做
obj.dataObject().myCoolProperty因为生成的javascript可能会让你的公共get属性成为一个函数。 -
我相当有信心这段代码:
this.dataObject = <T> new Object();实际上并没有创建泛型的新实例。调试器将 dataObject 显示为空 Object。 -
对不起,我最初阅读时有错误的想法。这可能对您有所帮助:stevefenton.co.uk/Content/Blog/Date/201407/Blog/…
标签: generics typescript