Pesquisa de site

javascript - Recuperar nome da classe de dentro de um método estático em typescript


Estou tentando recuperar o nome da classe de dentro de um método estático. Funciona a partir de um método comum, mas não de dentro de um método estático

 class MyNode{
    constructor(){
        var classname=this.constructor.toString().split ('(' || /s+/)[0].split (' ' || /s+/)[1];
        console.log(classname);
    }
    static a_static_method(){
        var classname=this.constructor.toString().split ('(' || /s+/)[0].split (' ' || /s+/)[1];
        console.log(classname);
    }
}
var obj=new MyNode(); // THIS WORKS, prints "MyNode" 
MyNode.a_static_method(); // THIS DOESN'T, prints "Function"

Esqueci de dizer: deve funcionar para as classes derivadas de MyNode.

Resposta #1

Agora você pode simplesmente usar this.name

Resposta #2

Por favor, verifique a seguinte solução:

class MyNode{
    constructor(){
        var classname=this.constructor.toString().split ('(' || /s+/)[0].split (' ' || /s+/)[1];
        console.log(classname);
    }
    static a_static_method(){
        var classname = this.toString().split ('(' || /s+/)[0].split (' ' || /s+/)[1];
        console.log(classname);
    }
}

Na classe derivada, você obterá o nome dessa classe, não MyNode

Artigos relacionados