【发布时间】:2016-01-17 10:39:27
【问题描述】:
有没有办法在 TypeScript 中获取函数调用者类型的 name?或者有没有办法获取当前对象类型的名称?
类似:
export class SomeData {
sampleFunc() {
console.log(this.getTypeName());
}
//or
anotherFunc(caller: any) {
console.log(caller.getTypeName());
}
}
getTypeName 是此处所需的功能。 TypeScript 中的类型在编译后消失。有typeof(获取类定义对象本身)但我看不到如何获取名称。
对此的一种用法可能是使用 console.group(name) 和 console.groupEnd() 进行更清晰的日志记录 - 至少在开发时是这样。
编辑:
据我搜索,有一个Polyfill for Metadata Reflection API 提议“将装饰器添加到 ES7,以及用于装饰器元数据的 ES7 反射 API 原型”。可以和decorators in TypeScript一起使用。
【问题讨论】:
-
您能否更新一个代码示例,说明您到底想要实现什么?我知道您可以使用 caller.name 但无法获取类型,因为在编译 TypeScript 时适用与 JavaScript 相同的规则。也许这可以帮助你stackoverflow.com/a/3789144
-
@MatijaGrcic 谢谢;我已经更新了这个问题。顺便说一句,在 chrome 上,
arguments.callee.caller.name仍然给出了函数的主体。 -
你可能还想试试vorlonjs.io
标签: javascript typescript type-deduction