【问题标题】:Checking for the type of a decorated class in Typescript?在 Typescript 中检查装饰类的类型?
【发布时间】:2018-06-24 00:26:43
【问题描述】:

如果我们像这样定义一个装饰器函数:

  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);

【问题讨论】:

    标签: javascript typescript mocha.js chai typescript-decorator


    【解决方案1】:

    属性装饰器的第一个参数始终是静态成员的类或构造函数的当前实例。所以在这种情况下,object 将是 Test 调用类实例装饰器。

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

    expect(object instanceof Test).toBeTruthy();
    

    或

    expect(object.constructor.name).toBe('Test');
    

    【讨论】:

      猜你喜欢
      • 2018-05-08
      • 2021-10-23
      • 2016-08-21
      • 2015-10-23
      • 2012-09-29
      • 2019-07-23
      • 2017-11-15
      • 2018-06-30
      相关资源
      最近更新 更多