расширить функцию преобразования класса-преобразователя для преобразования необязательных значений, если они не определены - PullRequest
0 голосов
/ 21 апреля 2020

В настоящее время я использую пакет class-transformer для преобразования необязательных значений в значения по умолчанию

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

и возникают две проблемы.

  • Мне нужно использовать эту логику преобразования c несколько раз для разных типов
  • Я хочу сделать его тестируемым для отчета о покрытии кода

Поэтому в основном я хочу создать функцию, преобразующую необязательное значение в значение по умолчанию, мой текущий подход:

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('')

1 Ответ

1 голос
/ 21 апреля 2020

Декораторы - это просто функции, так почему бы не написать свои собственные? Примерно так должно быть достаточно:

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