The @esfx/metadata
package provides an API for defining metadata about an object.
npm i @esfx/metadata
import { Metadata, getClassMetadata, getMemberMetadata, getParameterMetadata } from "@esfx/metadata";
const Service = name => Metadata("Service", name);
const ReturnType = type => Metadata("ReturnType", type);
const Type = type => Metadata("Type", type);
@Service("MyService")
class MyClass {
@ReturnType("string")
method(@Type("number") x) {
return "hi";
}
}
const c = new MyClass();
getClassMetadata(MyClass, "Service"); // "MyService"
getMemberMetadata(c, "method", "ReturnType"); // "string"
getParameterMetadata(c, "method", 0, "Type"); // "number"
You can read more about the API here.