@700Hp

Как корректно типизировать результат функции?

Приветствую, знатоки.
Я создал класс, в котором объединил несколько методов для валидации.
Использую vue и библиотеку vuelidate
Мне нужно типизировать переменную v$, подскажите как наиболее корректно это было бы сделать? Попробовал ReturnType, увы подсказок webstorm никаких не выдаёт, хотя и явных ошибок нет.

Пример rules&formdata

const data = {
    rules: {
      login: base({}),
      password: password
    },
    formData: reactive({
      login: '',
      password: '',
      remember_me: false
    }


Каждый ключ rules это так-же объёт, которые включает в себя метод проверки и сообщение об ошибке.

export const base = ({ min = 2, max = 255 }) => {
  return {
    minLength: ValidatorErrorMsgVuelidate.minLength(min),
    maxLength: ValidatorErrorMsgVuelidate.maxLength(max),
    required: ValidatorErrorMsgVuelidate.required()
  }
}


Объединяющий класс
export default class ValidatorVuelidate {
  constructor(rules, formData) {
    this.v$ = useVuelidate(rules, formData)
  }

  public validateField = (event: Event): void => {
    const eventTarget = event.target as HTMLInputElement
    const nameField = eventTarget.name
    this.v$.value[nameField].$touch()
    if (this.v$.value[nameField].$error) {
      this.v$.value[nameField].$validate()
    }
  }

  public validateForm = (): boolean | void => {
    this.v$.value.$validate()
    if (this.v$.value.$error) {
      return this.v$.value.$touch()
    }
    return true
  }

  public resetValidateField = (nameField: string): void => {
    this.v$.value[nameField].$reset()
  }
}

v$ является ref, включает в себя некоторые методы, а так-же имена полей формы.

Например:
v$.value.$touch()

Типы самой функции useVuelidate
export function useVuelidate(globalConfig?: GlobalConfig): Ref<Validation>;
export function useVuelidate<
  T extends {[key in keyof Vargs]: any},
  Vargs extends ValidationArgs = ValidationArgs,
  EState extends ExtractState<Vargs> = ExtractState<Vargs>
>(
  validationsArgs: Ref<Vargs> | Vargs,
  state: T | Ref<T> | ToRefs<T>,
  globalConfig?: GlobalConfig
): Ref<Validation<Vargs, T>>;

export default useVuelidate;
  • Вопрос задан
  • 75 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы