想象一下,您有实现某个装饰器的类:
@Component
class A
@Component
class B
如果你想要一个变量来保存其中一些类的类本身,它会有什么类型?
componentClass: typeof A | typeof B;
但是你是否已经在想:当你有很多类时枚举类不是一个好习惯,当你不知道它们时它甚至不是一个选择。
所以剩下的选项是(编辑:因为打字稿不允许 typeof 泛型):
componentClass: any;
但这也不好!
我想为 this 定义一个类型保护,所以我可以替换any
一个可以实际检查对象是否具有 @Component 装饰器的类型,因此可以像这样声明它:
componentClass: ComponentClass;
只是一个想法
我认为最好的方法是为它定义一个类型,并在那里定义守卫。但这是不可能的。
@HasDecorator("Component")
type ComponentClass = any;