当前,我使用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-validator
和class-transformer
一起创建自己的转换装饰器来转换可选值?
我的自定义装饰器应该看起来像这样
@TransformOptionalValueIfUndefined('')