【问题标题】:Is it possible to use TypeScripts decorator to validate value of method parameters?是否可以使用 TypeScripts 装饰器来验证方法参数的值?
【发布时间】:2020-12-29 04:45:14
【问题描述】:

我尝试按照本手册TypeScript parameter decorators 进行操作,但很难将其弄出来是否可以创建装饰器来验证方法参数,如下所示:

class World{
   constructor(){
   }

   sayHelloTo(@checkIfNameBeginsWithCapital name: string){
      console.log("Hello World!");
   }
}

如果我理解正确的话,可以通过创建两个装饰器来实现,如下:

class World{
   constructor(){
   }

   @validate
   sayHelloTo(@nameBeginWithCapital name: string){
      console.log("Hello World!");
   }
}

@nameBeginWithCapital 将在参数上定义元数据,@validate 将查找具有此类元数据的参数并执行实际验证,对吗?

我是否理解正确的问题,如果没有,是否可以在当前 TS 限制内创建 @checkIfNameBeginsWithCapital 来执行此任务而无需额外的装饰器?

【问题讨论】:

    标签: typescript typescript-decorator


    【解决方案1】:

    @nameBeginWithCapital 将在参数上定义元数据,@validate 将查找具有此类元数据的参数并执行实际验证,对吗?

    没错。参数装饰器只能用于添加元数据。正如您所描述的,“繁重的工作”需要通过方法装饰器完成。一个很好的例子和解释可以在TypeScript Handbook 中找到(正如您已经找到的并且这是官方来源),它展示了您想要实现的目标,但使用required 验证代替。

    我修改了手册中的示例以适合您的情况,并使其适用于StackBlitz。

    【讨论】:

    • 非常感谢!
    猜你喜欢
    • 2012-09-03
    • 1970-01-01
    • 1970-01-01
    • 2013-01-14
    • 1970-01-01
    • 2011-02-27
    • 2023-03-15
    • 1970-01-01
    相关资源
    最近更新 更多