如果未定义,则扩展class-transformer转换函数以转换可选值

当前,我使用class-transformer包将可选值转换为默认值

@IsString()
@IsOptional()
@Transform((description: string) => description || '')
public description: string;

出现两个问题。

  • 我必须针对不同类型多次使用此转换逻辑
  • 我想对代码覆盖率报告进行测试

所以基本上我想创建一个函数,将可选值转换为默认值,这是我目前的方法:

function transformValueIfUndefined<tvalue>(value: tvalue,fallbackValue: tvalue): tvalue {
  if (value === undefined) {
    return fallbackValue;
  }

  return value;
}

现在我可以在Transform装饰器中使用此功能

@Transform((description: string) => transformValueIfUndefined(description,''))

但是正如您所看到的,这样做是不值得的。有没有一种方法可以与class-validatorclass-transformer一起创建自己的转换装饰器来转换可选值?

我的自定义装饰器应该看起来像这样

@TransformOptionalValueIfUndefined('')
shala1204 回答:如果未定义,则扩展class-transformer转换函数以转换可选值

装饰器只是函数,所以为什么不编写自己的装饰器呢?像这样的东西就足够了:

function TransformValueIfUndefined() {
    return Transform((description: string) => description || '')
}
@TransformValueIfUndefined()
public description: string;
本文链接:https://www.f2er.com/2395297.html

大家都在问