我想从 Typescript 类的实例方法中获取当前方法的名称。
(伪代码,不起作用):
class Foo {
bar() {
console.log(something); //what should something be?
}
}
new Foo().bar();
我希望“某物”返回“酒吧”。我意识到 this
可以给我类,我可以以某种方式从中获取类及其属性,但我不知道如何获取“此功能”(即方法栏,而不是Foo 类)。
我已经看到其他几个与查找类名等相关的问题,但没有一个解决获取当前方法名的问题。
原文由 Anand 发布,翻译遵循 CC BY-SA 4.0 许可协议
除了
arguments.callee.name
之外,没有直接的方法来获得它。我建议另外两种方法:
使用装饰器注入方法名:
缺点是您必须注释要从中获取名称的所有函数。您可以改为只注释类,并在装饰器中迭代所有原型函数并应用相同的想法。
我的第二个选项不是标准化的,需要更加小心才能在浏览器中获得一致的结果。它依赖于创建一个错误对象并获取它的 堆栈 跟踪。