Vee-validate 3.0 настроить defaultMessage с vue-18n и TS - PullRequest
0 голосов
/ 06 ноября 2019

Я пытаюсь определить объект vee-validate configure , defaultMessage в TS. Я видел этот код в файле examples , vee-validate.js:

configure({
  defaultMessage: (field, values) => {
    // override the field name.
    values._field_ = i18n.t(`fields.${field}`);

    return i18n.t(`validation.${values._rule_}`, values);
  }
});

Я пытаюсь конвертировать в TS

const dm: string | ValidationMessageGenerator | undefined =
    (field: string, values: Record<string, any>) => {
        values._field_ = i18n.t(`fields.${field}`);
        return (i18n.t(`validation.${values._rule_}`, values)) as string | ValidationMessageGenerator;
    };
configure({
    defaultMessage: dm,
});

Но я пытаюсь набрать, У меня всегда есть такие ошибки:

El tipo '(field: string, values: Record<string, any>) => ValidationMessageTemplate' no se puede asignar al tipo 'string | ValidationMessageGenerator | undefined'. El tipo '(field: string, values: Record<string, any>) => ValidationMessageTemplate' no se puede asignar al tipo 'ValidationMessageGenerator'. Los tipos de parámetros 'values' y 'params' no son compatibles. El tipo 'Record<string, any> | undefined' no se puede asignar al tipo 'Record<string, any>'. El tipo 'undefined' no se puede asignar al tipo 'Record<string, any>'.ts(2322)

Единственная конфигурация, которая работает для меня, это установить флаги //@ts-ignore и использовать код JavaScript, работает, но я хотел бынаберите его и уберите флаг

Спасибо

1 Ответ

0 голосов
/ 08 ноября 2019

Вам не нужно иметь все это приведение, вы должны внимательно прочитать наборы, поскольку есть некоторые тонкие различия, это должно работать:

const dm = (field: string, values: Record<string, any> = {}) => {
  values._field_ = i18n.t(`fields.${field}`);

  return (i18n.t(`validation.${values._rule_}`, values));
};

configure({
  defaultMessage: dm,
});

Вы пропустили, что values является необязательным ина самом деле не требуется тип ValidationMessageGenerator, потому что не все правила имеют параметры.

...