[英]Instance of array property in generic class?
我有一個帶有2個屬性的普通打字稿類-
export class WrapperModel<T>{
constructor(private testType: new () => T) {
this.getNew();
}
getNew(): T {
return new this.testType();
}
public Entity: T;
public ShowLoading: boolean;
}
然后按如下方式使用它-
this.userModel = new WrapperModel<UserProfileModel>(UserProfileModel);
我假設它正在其構造函數中創建UserProfileModel
類型的實例。
但是,當我嘗試使用數組類型屬性時,它將失敗。 就像我做的那樣-
this.userModel = new WrapperModel<Array<UserProfileModel>>(Array<UserProfileModel>);
我在上述情況下得到的錯誤-
是我無法在泛型或其他方式中創建Array屬性的實例。 我的需求很簡單; 我想在通用類中創建Array
屬性的實例。
問題在於,在運行時會刪除泛型,因此Array<UserProfileModel>
並不是真正的構造函數, Array
是構造函數,因此您可以編寫:
var userModel = new WrapperModel<Array<UserProfileModel>>(Array);
這適用於任何泛型類型,而不僅僅是數組:
class Generic<T> { }
var other = new WrapperModel<Generic<UserProfileModel>>(Generic);
通常對於泛型類,似乎沒有一種方法可以獲取特定類型實例化的構造函數,只有泛型構造函數:
// Valid, new get a generic constrcutor
var genericCtor: new <T>() => Generic<T> = Generic;
// Not valid, Generic<UserProfileModel> is not callable
var genericCtor: new () => Generic<UserProfileModel> = Generic<UserProfileModel>;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.