检查Typescript中装饰类的类型?

时间:2018-06-24 00:26:44

标签: javascript typescript mocha chai typescript-decorator

如果我们定义这样的装饰器函数:

  return function IsDefined(object: any, propertyName: string) {
       ....
  ]

然后装饰一些这样的属性:

class Test {
  @IsDefined() p1: String = "";
}

并在装饰器中执行此测试:

  expect(object).to.equal(Test);

应该通过吗?什么是object

例如,通过:

const instance:any = new Test();

expect(object.constructor.name).
to.equal(instance.constructor.name);

1 个答案:

答案 0 :(得分:1)

属性装饰器的

第一个参数始终是静态成员的类或构造函数的当前实例。因此,在这种情况下,value tag main_tag 1 tag_A ABC -1 tag_C ABC -1 tag_A ABC 1 tag_C ABC 将是object类实例装饰器的调用来源。

该测试不应通过原因,因为我提到它是当前实例。您可以检查object是否实际上是Test的实例或类似于上一个示例:

Test

expect(object instanceof Test).toBeTruthy();