Helpers for working with typescript's reflection.
$ npm install @slicky/reflection
Annotation definition:
import{makeClassDecorator}from'@slicky/reflection';classNamedClassDefinition{constructor(name: string){ ... }}letNamedClass=makeClassDecorator(NamedClassDefinition);Usage:
import{getAnnotations,findAnnotation}from'@slicky/reflection';
@NamedClass('Test')classTestClass{ ... }// get all annotations on class:getAnnotations(TestClass);// finding annotation for class:findAnnotation(TestClass,NamedClassDefinition);##Properties metadata
Properties metadata can be used also for methods and accessors.
Metadata definition:
import{makePropertyDecorator}from'@slicky/reflection';classNamedPropertyDefinition{constructor(name: string){ ... }}letNamedProperty=makePropertyDecorator(NamedPropertyDefinition);Usage:
import{getPropertiesMetadata,getPropertyMetadata,findPropertyMetadata}from'@slicky/reflection';classTestClass{
@NamedProperty('test')prop;}// get all properties on class:getPropertiesMetadata(TestClass);// get all metadata for property "prop":getPropertyMetadata(TestClass,'prop');// finding metadata for property "prop":findPropertyMetadata(TestClass,NamedPropertyDefinition,'prop');Metadata definition:
import{makeParameterDecorator}from'@slicky/reflection';classNamedParameterDefinition{constructor(name: string){ ... }}letNamedParameter=makeParameterDecorator(NamedParameterDefinition);Usage:
import{getParametersMetadata,findParameterMetadata}from'@slicky/reflection';classTestClass{constructor(@NamedParameter('param')arg){ ... }method(arg1, @NamedParameter('param2')arg2){ ... }}// get all parameters in constructor:getParametersMetadata(TestClass);// get all parameters in method "method":getParametersMetadata(TestClass,'method');// finding metadata for first argument in constructor:findParameterMetadata(TestClass,NamedParameterDefinition,0);// finding metadata for second argument in method "method":findParameterMetadata(TestClass,NamedParameterDefinition,1,'method');