如何解决Typescript获取构造函数的每个参数的类型构造函数
我已经看到TypeScript库,只需在类上添加注释,它就可以通过声明参数类型而将该类注入其他类的构造函数中。
它是这样的:
@someAnnotation()
class Foo {
}
@someAnnotation()
class Bar {
}
@someAnnotation()
class A {
constructor(foo: Foo,bar: Bar) {
}
}
@someAnnotation()
class B {
constructor(a: A) {
}
}
然后神奇地,图书馆可以以某种方式获得这些
/// how do they get these?
const constructorArgumentsTypesOfA = [Foo,Bar]
const constructorArgumentsTypesOfB = [A]
这怎么可能?批注后面的代码是什么
此库的示例为typedi
解决方法
通过查看typedi的代码,我发现他们使用了名为reflect-metadata
工作就是这样
const paramTypes = Reflect.getMetadata('design:paramtypes',A);
console.log(paramTypes)
更具体地说,必须先调用import 'reflect-metadata'
。
此外,装饰器是必需的。但是任何方法都可以,即使是空的函数装饰器
function Service(target: any) {
}
像这样使用
@Service
class A {
id = 'A'
constructor(foo: Foo,bar: Bar) {
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。