[英]Create instances in nested generics for TypeScript
我正在使用Angular 4开发应用程序。在我的代码中,我想从嵌套的通用类创建一个实例,如下所示:
export class Page<T>
{
constructor(c: { new(): T; }){
this.FilterData = new c();
}
TotalItems: number;
PageSize: number;
CurrentPage: number;
TotalPage: number;
FilterData: T;
}
export class Filter<T>
{
constructor(c: { new(): T; })
{
this.AdvanceData = new c();
}
AdvanceData: T
IsAdvance: boolean;
OrderMeThod: string;
OrderBy: string;
KeyWord: string;
}
export class Client
{
Name:string;
}
而且我不知道如何从Page<Filter<Client>>
初始化对象,其中Filter
和Client
在构造函数中初始化。 我尝试过例如: new Page<Filter<Client>>();
但这没用。 请帮助我解决该问题。 谢谢
不用调用new
,而是让您传递的函数返回新实例。 例:
interface Generator<T> {
generate(): T
}
export class Page<T> {
constructor(c: Generator<T>) {
this.FilterData = c.generate();
}
TotalItems: number;
PageSize: number;
CurrentPage: number;
TotalPage: number;
FilterData: T;
}
export class Filter<T> {
constructor(c: Generator<T>) {
this.AdvanceData = c.generate();
}
AdvanceData: T;
IsAdvance: boolean;
OrderMeThod: string;
OrderBy: string;
KeyWord: string;
}
export class Client {
Name: string;
}
const clientGenerator: Generator<Client> = {
generate: () => new Client()
};
const filterGenerator: Generator<Filter<Client>> = {
generate: () => new Filter(clientGenerator)
};
const pageOfFilterOfClient: Page<Filter<Client>> = new Page(filterGenerator);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.