TS2322: Тип ‘NotRequiredArraySchema’ не может быть присвоен типу ‘Ref | Schema<string[] / С использованием Formik yup validator

#reactjs #jsx

#reactjs #jsx

Вопрос:

Я решаю эту проблему. Я использую yup для проверки formik. Код для схемы:

 const schema = yup.object().shape<Partial<NoteInterface>>({
  noteName: yup.string().required().max(32),
  groupId: yup.number().required(),
  noteText: yup.string().required().max(32),
  noteDuration: yup.string().required().max(32),
  noteTags: yup.array().of(yup.string()),
});
 

И код модели здесь:

 export enum cNote {
  noteId = 'noteId',
  groupId = 'groupId',
  noteName = 'noteName',
  noteText = 'noteText',
  noteDuration = 'noteDuration',
  noteCreation = 'noteCreation',
  noteTags = 'noteTags',
}

export interface NoteInterface {
  noteId: string;
  groupId: number;
  noteName: string;
  noteText: string;
  noteDuration: string;
  noteCreation: string;
  noteTags: string[];
}

export const Note = (): NoteInterface => ({
  noteId: '',
  groupId: 0,
  noteName: '',
  noteText: '',
  noteDuration: '',
  noteCreation: '',
  noteTags: [],
});
 

Все работает нормально, за исключением noteTags, у которых возникает эта проблема:

 TS2322: Type 'NotRequiredArraySchema<string | undefined>' is not assignable to type 'Ref | Schema<string[] | undefined> | MixedSchema<string[] | undefined> | undefined'.   Type 'NotRequiredArraySchema<string | undefined>' is not assignable to type 'MixedSchema<string[] | undefined>'. 
 

спасибо за ваше время

Ответ №1:

Вы пробовали добавить .required() в средство проверки?

 const schema = yup.object().shape<Partial<NoteInterface>>({
  noteName: yup.string().required().max(32),
  groupId: yup.number().required(),
  noteText: yup.string().required().max(32),
  noteDuration: yup.string().required().max(32),
  noteTags: yup.array().of(yup.string().required()).required(),
});