我需要初始化'gDetailDS'对象的初始值。我无法创建类而不是接口,并且接口不允许我设置默认值。
我尝试使用map或其他功能解决此问题,但未成功。使用map时,出现错误“ _this.gDetailDS.map不是函数”。
export interface InterfaceA{
sysSeq: number;
code: string;
isUpdate: boolean;
version: number;
}
export interface InterfaceB{
sysSeq: number;
name: string;
isReserved: boolean;
isPublic: boolean;
version: number;
}
export class DetailComponent<T> extends CoreComponent {
gDetailDS: any;
constructor(){
this.gDetailDS = <T> new Object;
}
}
我想专门为布尔值获取默认值。例如,在执行以下代码之后,
this.gDetailDS = <InterfaceB> new Object;
我应该有一个类型为InterfaceB的对象,其默认设置为
this.gDetailDS.isReserved has default value "false";
this.gDetailDS.isPublic has default value "false";
非常感谢您的帮助。
答案 0 :(得分:1)
一旦转换为Javascript,您的DetailComponent<T>
就没有有关T
的信息。因此,您不能直接使用它来获取T的实例。
但是,如果可以将参数添加到DetailComponent
构造函数中,则解决问题的方法是:
export class DetailComponent<T> extends CoreComponent {
gDetailDS: T;
constructor(newInstance: new () => T){
this.gDetailDS = new newInstance();
}
}
class InterfaceAImpl implements InterfaceA {
sysSeq: number;
code: string;
isUpdate: boolean;
version: number;
};
var detailComponent: DetailComponent<InterfaceA> = new DetailComponent<InterfaceA>(InterfaceAImpl);