2016-01-17 3 views
1

Есть ли способ получить имя типа вызывающего объекта в TypeScript? В качестве альтернативы есть способ получить имя типа текущего объекта?Тип Обнаружение в TypeScript

Что-то вроде:

export class SomeData { 
    sampleFunc() { 
     console.log(this.getTypeName()); 
    } 

    //or 
    anotherFunc(caller: any) { 
     console.log(caller.getTypeName()); 
    } 
} 

getTypeName является желаемой функциональностью здесь. Типы в TypeScript исчезают после компиляции. Существует typeof (для получения самого объекта определения класса), но я не вижу, как получить имя .

Одно использование для этого может быть более чистым вводом в эксплуатацию с console.group(name) и console.groupEnd() - по крайней мере, во время разработки.

Edit:

Насколько я искал, есть Polyfill for Metadata Reflection API предложение «добавить декораторов к ES7, вместе с прототипом в Reflection API ES7 для декоратор метаданных». Это можно использовать совместно с decorators in TypeScript.

+0

Вы можете обновить с образцом кода, что именно вы пытаетесь достичь? Я знаю, что вы можете использовать caller.name, но получение типа не возможно, поскольку такие же правила применяются, как и для JavaScript, когда скомпилирован TypeScript. Возможно, это поможет вам http://stackoverflow.com/a/3789144 –

+0

@MatijaGrcic Спасибо; Я обновил вопрос. BTW на chrome, 'arguments.callee.caller.name' по-прежнему дает тело функции. –

+1

Вы также можете попробовать: http://vorlonjs.io/ –

ответ

4

Для моих целей я использую:

caller.constructor.name 

Для получения дополнительной информации вы можете прочитать это отличный пост: How to get a JavaScript object's class?

+0

Ты шутишь! :) Благодаря! –

Смежные вопросы