获取传递的打字稿泛型参数的类名

use*_*157 2 generics 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()
Run Code Online (Sandbox Code Playgroud)

我需要将输出打印为“”?

Tit*_*mir 5

虽然在编译器时擦除了泛型类型,但您可以传入类的构造函数并获取其名称:

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()
Run Code Online (Sandbox Code Playgroud)