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.
