扩展 class-transformer 转换函数以转换未定义的可选值

extend class-transformer Transform function to transform optional values if undefined

目前我使用 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;