reactjs - Typescript-typ av inmatningsparametern formik.error och formik.touched (prime react + formik)


Jag använder PrimeReact med Typescript och nu måste jag använda Formik som formulärvalidator. PrimeReact(v7) Formik-dokumentation: https://www.primefaces.org/primereact-v7/#/formik och det finns inga förändringar när du byter flik till TS-källkod. Jag har problem med delen:

const isFormFieldValid = (name) => !!(formik.touched[name] && formik.errors[name]);
const getFormErrorMessage = (name) => {
    return isFormFieldValid(name) && <small className="p-error">{formik.errors[name]};
};

Jag kan inte lösa typen "name". Jag försökte med :string, FormikTouched, any, FormikError... När jag försöker med string som typ av parameter säger min IDE:

TS7053: Elementet har implicit typen 'any' eftersom ett uttryck av typen 'string' inte kan användas för att indexera typen 'FormikTouched<{ name: string; }>'. Ingen indexeringssignatur med en parameter av typen 'string' hittades för typen 'FormikTouched<{ name: string; }>'.

Kan någon hjälpa mig med detta, snälla?

Svar #1

Jag gjorde detta:

  const formikTouched: any = formik.touched;
  const formikErrors: any = formik.errors;

  const isFormFieldValid = (name: string) => !!(formikTouched[name] && formikErrors[name]);
  const getFormErrorMessage = (name: string) => {
    return isFormFieldValid(name) && <small className="p-error">{formikErrors[name]};
  };

Typescript slutar klaga och körs nu utan fel.