扩展类转换器Transform函数以在未定义的情况下转换可选值



当前我使用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('')

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

function TransformValueIfUndefined() {
return Transform((description: string) => description || '')
}
@TransformValueIfUndefined()
public description: string;

相关内容

  • 没有找到相关文章

最新更新