خطای عدم تطابق نوع در ارورهای فرمیک با استفاده از تایپاسکریپت


من یک کامپوننت سفارشی برای ورودیها برای formik دارم و در داخل آن برچسب خطا را در صورت وجود نمایش میدهم.
اگر آن را به این صورت چاپ کنم: {errors[field.name]} کار میکند
اما {t(errors[field.name]?.toLocaleString())} این کار نمیکند.

import { FieldProps, FormikErrors } from "formik";
import { useTranslation } from "react-i18next";

const InputField: React.FC<InputFieldProps & FieldProps> = ({
  field,
  form: { touched, errors },
  type,
  label,
  ...props
}) => {
  const { t } = useTranslation();
  
  return (
    <div>
      <label
        htmlFor={field.name}>
        {label}
      </label>
      <input
        type={type}
        {...field}
        {...props}/>
      {touched[field.name] && errors[field.name] && (
        <div>
          <p>
            {errors[field.name]}
            {t(errors[field.name])} <---- this does not work
          </p>
        </div>
      )}
    </div>
  );
};

export default InputField;

من خطا دریافت میکنم:

Argument of type 'string | FormikErrors<any> | string[] | FormikErrors<any>[] | undefined' is not assignable to parameter of type 'TemplateStringsArray | Normalize<{test: 'test'}> | (TemplateStringsArray | Normalize<...>)[]'.

پاسخ شماره ۱

این روشی است که من مسئله را حل کردم. من همین خطا را در فرمیک با کتابخانه MUI دریافت میکردم:

 {errors?.fieldName && typeof errors.fieldName=== "string" && (
                    <Typography component={'div'} fontSize={12} color={'red'}>
                      {errors.fieldName}
                    </Typography>)}

پاسخ شماره ۲

با این مشکل در useFormik() مواجه شدم و توانستم خطا را به این صورت بهطور ایمن تبدیل کنم

{formik.errors.fieldName ? <div>{formik.errors.fieldName as string}</div> : null}