reactjs - TypeScript Yup | Erwartet 0 Argumente, aber 1 erhalten.ts(2554)
Ich versuche, meine Validierungsschemas mit TS und React zu erstellen, um sie in einem Formik-Formular zu verwenden.
Ich habe mehrere Validierungsschemata, denen ich in meinem Modul entsprechen muss, also dachte ich daran, ein Enum zu erstellen, um sie leicht wiederverwenden zu können.
IN EINER TS-Datei:
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'),
}),
}
Aber ich bekomme Fehler bei jedem Yup.String, die sagen:
Expected 0 arguments, but got 1.ts(2554)
const string: Yup.StringSchemaConstructor
() => Yup.StringSchema
Ich versuche, einen Verweis auf die Yup-Typen zu finden, aber ohne Erfolg. Was ist hier das Problem? Ich muss ein Argument an Yup übergeben, und es sagt, dass 0 erwartet wird. Das ergibt für mich keinen Sinn. Danke für deine Zeit!
Antwort #1
Wenn man sich Ihre Fehlermeldung und die Typen für yup hier ansieht, scheint das Problem die Aufrufe wie folgt zu sein: Yup.string('Bitte wählen Sie eine Gruppe'). Es scheint, dass das StringSchemaConstructor-Interface keine Eigenschaft definiert, die einen string annimmt.
Antwort #2
Dies liegt an der Kompatibilität mit TypeScript. Verwenden Sie Yup.string(). Für weitere Informationen besuchen Sie: Yup TypeScript