Vee验证3.0使用vue-18n和TS配置defaultMessage

我正在尝试在TS中定义vee-validate configure objectdefaultMessage。我在examplesvee-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,any>) => ValidationmessageTemplate' no se puede asignar al tipo 'string | ValidationmessageGenerator | undefined'. El tipo '(field: 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代码有效,但是我想输入它并删除标志

谢谢

bysjlyl 回答:Vee验证3.0使用vue-18n和TS配置defaultMessage

您不需要所有这些转换,您应该仔细阅读打字内容,因为其中存在一些细微的差异,这应该可以:

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类型不是必需的,因为并非所有规则都有参数。

本文链接:https://www.f2er.com/3152016.html

大家都在问