我希望能够从函数内部获取 TypeScript 函数自己的名称。我已通读 Function: name 文档,但以下代码无法按预期工作。
这是一个简单的测试代码(链接到 TS Playground)
const func = () => {
return func.name;
}
namespace NS {
export const func = () => {
return NS.func.name;
}
}
console.log(func()); // Expect output: 'func'
console.log(NS.func()); // Expect output: 'NS.func'
代码的实际输出是
'func'
''
似乎如果函数包含在命名空间中,则 Function.name 属性将设置为空字符串。
有什么聪明的方法可以解决这个问题吗?
非常感谢您的及时回复。
根据Bergi和Giovanni的反馈,我修改了原始代码以获得部分解决方案。
const func = () => {
return func.name;
}
namespace NS {
export const func1 = () => {
return NS.func1.name;
}
export const func2 = () => {
return func2.name;
}
export function func3() {
return NS.func3.name
}
export function func4() {
return func4.name
}
}
console.log(func()); // Expect output: 'func'
console.log(NS.func1()); // Expect output: 'func1'
console.log(NS.func2()); // Expect output: 'func2'
console.log(NS.func3()); // Expect output: 'func3'
console.log(NS.func4()); // Expect output: 'func4'
现在可以正确返回“func3”和“func4”的名称(尽管仍然无法获取“NS.func3”和“NS.func4”的完全限定名称)。
感谢您的建议。