Я пишу небольшую библиотеку, используя декоратор машинописи и не могу получить тип параметра.Я использую библиотеку "рефлексии-метаданных".
Это класс, который использует декораторы:
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
Есть ли умный способ сделать это?
Спасибо за помощь!