簡體   English   中英

泛型類中數組屬性的實例?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM