reactjs - TypeScript Yup | Se esperaban 0 argumentos, pero se recibió 1.ts(2554)
Estoy intentando crear mis ValidationSchemas usando TS, React para poder usarlos en un formulario de Formik.
Tengo varios esquemas de validación con los que necesito cumplir en mi módulo, así que pensé en crear un enum para poder reutilizarlos fácilmente.
EN UN ARCHIVO TS:
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'),
}),
}
Pero obtengo errores en cada Yup.String, que dicen:
Expected 0 arguments, but got 1.ts(2554)
const string: Yup.StringSchemaConstructor
() => Yup.StringSchema
Estoy intentando encontrar referencia a los tipos de Yup, pero sin suerte. ¿Cuál es el problema aquí? Necesito pasar un argumento a Yup, y dice que se esperaban 0. No tiene sentido para mí. ¡Gracias por tu tiempo!
Respuesta #1
Mirando tu mensaje de error y los tipos para yup aquí, parece que el problema son las llamadas que estás haciendo así: Yup.string('Por favor selecciona un grupo'). Parece que la interfaz StringSchemaConstructor no define una propiedad que acepte un string.
Respuesta #2
Esto se debe a la compatibilidad con Typescript. Usa Yup.string(). Para más detalles visita: Yup Typescript