ParameterDecorator: получить тип параметра - PullRequest
0 голосов
/ 20 марта 2019

Я пишу небольшую библиотеку, используя декоратор машинописи и не могу получить тип параметра.Я использую библиотеку "рефлексии-метаданных".

Это класс, который использует декораторы:


interface IParamInterface {
    foo: string;
    bar: string;
}

@ClassDecorator()
class MyClass {
    @MethodDecorator()
    myMethod(@ParamDecorator() param: IParamInterface)
}

И во время выполнения, используя декораторы, я хочу получить тип param (IParamInterface) Чтобы вызвать функцию (поэтому мне нужно где-то связать функцию), когда вызывается myMethod.


const instance = new MyClass();

let prototype = Object.getPrototypeOf(instance);
let properties = Object.getOwnPropertyNames(prototype);

for (let property of properties) {
    //Retrieve parameter metadata for method 'myMethod'
    const paramMetadata = Reflect.getMetadata('param_decorator', instance[property]);
    //Retrieve myMethod arguments
    const arguments = instance[property].arguments
}

Но я не могу этого сделать, потому что компилятор говорит: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them

Есть ли умный способ сделать это?

Спасибо за помощь!

...