【问题标题】:Type Detection in TypeScriptTypeScript 中的类型检测
【发布时间】: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


【解决方案1】:

出于我的目的,我使用:

caller.constructor.name

有关更多信息,您可以阅读这篇出色的帖子: How to get a JavaScript object's class?

【讨论】:

  • 你在开玩笑吧! :) 谢谢!
猜你喜欢
  • 1970-01-01
  • 2019-12-29
  • 2012-09-29
  • 2018-03-27
  • 1970-01-01
  • 1970-01-01
  • 2021-11-14
  • 1970-01-01
相关资源
最近更新 更多