reactjs - TypeScript Yup | Förväntade 0 argument, men fick 1.ts(2554)
Jag försöker skapa mina ValidationSchemas med TS, React för att använda dem i ett Formik-formulär.
Jag har flera valideringsscheman som jag behöver följa i min modul, så jag tänkte skapa en enum för att enkelt kunna återanvända dem.
I EN TS-FIL:
import * as Yup from "yup";
export const ValidationSchema {
AddUserSchema = Yup.object().shape({
username: Yup.string('Provide a username').required('Username is required'),
email: Yup.string().email('Provide a valid email address'),
password: Yup.string('Provide a password').required('Password is required'),
confirmPassword: Yup.string('Provide your password again')
.required('Password confirmation is required')
.oneOf([Yup.ref('password')], 'Passwords do not match'),
group: Yup.string('Please select a group').required('Group is required')
}),
EditUserSchema = Yup.object().shape({
username: Yup.string('Provide a username').required('Username is required'),
email: Yup.string().email('Provide a valid email address'),
group: Yup.string('Please select a group').required('Group is required')
}),
EditPasswordSchema = Yup.object().shape({
password: Yup.string('Provide a password').required('Password is required'),
confirmPassword: Yup.string('Provide your password again')
.required('Password confirmation is required')
.oneOf([Yup.ref('password')], 'Passwords do not match'),
}),
}
Men jag får fel i varje Yup.String, som säger:
Expected 0 arguments, but got 1.ts(2554)
const string: Yup.StringSchemaConstructor
() => Yup.StringSchema
Jag försöker hitta referens till Yup-typerna, men utan framgång. Vad är problemet här? Jag behöver skicka ett argument till Yup, och det säger att det förväntas 0. Det verkar inte logiskt för mig. Tack för din tid!
Svar #1
Om man tittar på ditt felmeddelande och typerna för yup här verkar problemet vara anropen du gör som detta: Yup.string('Please select a group'). Det verkar som att StringSchemaConstructor-gränssnittet inte definierar en egenskap som tar en string.
Svar #2
Detta beror på Typescript-kompatibilitet. använd Yup.string(). för mer information besök: Yup Typescript