typescript - ¿Cómo obtener el nombre de un método estático en una clase?
Imprimo muchos registros en el método estático y quiero usar el nombre del método como contexto. Pero no quiero declarar una variable context y asignarle el nombre de la función/método.
Quiero usar el contexto accediendo al nombre del método. No solo en un método estático de clase, sino también en cada función.
Aquí está mi intento:
class CloudFunction {
public static parse() {
console.log(this.name); // CloudFunction
console.log(CloudFunction.parse.name); // get nothing here
// Don't want to declare `context` variable and assign method name to it.
const context = 'parse';
logger.debug('a log', { context, arguments: 'pubsubMessage' });
//... many logs use this context
// want the better way like this:
// const self = this;
// logger.error(new Error('bad'), {context: self.name })
}
}
CloudFunction.parse();
Ninguno de ellos funciona. ¿Puedo usar la forma reflect para obtenerlo? No estoy seguro de que reflect pueda hacer esto.
actualizar
Aquí está mi resultado:
☁ DL-Toolkits [master] npx ts-node /Users/ldu020/workspace/github.com/mrdulin/ts-codelab/src/class/get-static-method-name/index.ts
CloudFunction
Respuesta #1
Estoy obteniendo el nombre del método, ¿o estoy entendiendo algo mal?
class ClassWithStaticMethod {
static staticMethod() {
console.log('1: ' + ClassWithStaticMethod.staticMethod.name); // output: '1: staticMethod'
return ClassWithStaticMethod.staticMethod.name;
}
}
console.log('2: ' + ClassWithStaticMethod.staticMethod()); // output: '2: staticMethod'
Ejemplo de código
Respuesta #2
Creo que es debido al modificador de acceso público antes del método estático.
class CloudFunction {
static parse() {
console.log(this.name); // CloudFunction
console.log(CloudFunction.parse.name); // get nothing here
const context = 'parse';
}
}
CloudFunction.parse();
Este código funciona sin modificador de acceso
