[英]How to instantiate a generic T in a method in typescript?
FileInformation
是具有字符串屬性path
。 我試圖將其作為類型傳遞給方法getValue<T>()
,然后從返回的對象獲取我的屬性。 我的問題是該函數不知道什么是T
,因此無法實例化它。 有沒有一種方法可以基於調用方方法創建T
的新實例?
呼叫者,
This.getValue<FileInformation>().subscribe((value) => {
console.log(v.data); // object is returned
console.log(v.data.path); // always undefined
})
方法,
private value: Subject<ISignalRHub<any>> = new Subject<ISignalRHub<any>>();
public getValue<T>() {
this.value = new Subject<SignalRHub<T>>();
this.hubConnection.on(CRUD.create, (data: T) => {
this.value.next({ method: CRUD.update, data: data });
});
const val = new Subject<ISignalRHub<T>>();
this.value.subscribe((v: ISignalRHub<T>) => {
val.next(v);
});
return val.asObservable();
}
更新
這是值和嵌套對象的輸出
console.log(v);
console.log(v.data);
console.log(v.data.path);
更新
基於下面的評論,我的問題是在Pascal情況下序列化所有屬性的JSON解析器。 感謝@Antoniossss指出這一點。
This.getValue<FileInformation>().subscribe((value) => {
console.log(v.data); // object is returned
console.log(v.data.path); // always undefined
})
好吧,這里的值永遠不會是FileInformation
類型,並且它將始終是純JS對象。 此處使用的類型僅用於使用控制(檢測對不存在的屬性的訪問)。 這對於接口非常有效-因為對象可能與接口簽名匹配。 對於課堂實例,您必須自己創建
This.getValue()
.pipe(
map(jsonData=>new FileInformation(jsonData)
).subscribe((value:FileInformation) => // here value will be indeed a FileInformation instance
})
顯然,您必須為此示例創建constructor
,該constructor
會將json映射到您的FileInformation
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.