簡體   English   中英

獲取傳遞的打字稿泛型參數的類名

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

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