[英]Get class name of generic parameter passed typescript
我如何獲取傳遞的泛型參數的類名
class Sample<T>{
public getTypeName(): void {
alert(T.name)
//or
alert(new T().constructor.name)
}
}
class Person {
public FullName:string
}
new Sample<Person>().getTypeName()
我需要將輸出打印為“人”?
雖然在編譯器時擦除了泛型類型,但您可以傳入類的構造函數並獲取其名稱:
class Sample<T>{
public constructor(public tCtor: new (...args:any[]) => T){}
public getTypeName(): void {
console.log(this.tCtor.name)
}
}
class Person {
public FullName!:string
}
new Sample(Person).getTypeName()
因為我無法評論Titian Cernicova-Dragomir的回答:
這只有在調用者的上下文是非通用的情況下才有意義,但通常情況並非如此。 如果我手頭只有一個泛型參數(例如在泛型類中),則無法創建它的實例化類型的運行時實例或使用實例化類型的名稱,即使所需的信息應該在編譯時可用時間。 對於習慣了 C++ 模板或 Java/C# 泛型的人來說,這是一種遺憾。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.