Я пытаюсь проверить поле объекта с помощью yup.
Вот мои требования:
- Поле должно быть либо строкой, либо неопределенным.
- Если он не определен, ему должно быть присвоено значение по умолчанию.
- Если это значение какого-то другого типа, его не следует преобразовывать в строку. Вместо этого он должен быть несовместимым и привести к ошибке.
Пока что я пробовал следующее:
A. Следующая схема не предотвращает принуждение типов. например, когда значение является числом, оно проходит проверку. Однако я хочу, чтобы он не прошел проверку.
const schema = yup.object().shape({
myField: yup.string().default('myDefaultString')
});
B. Следующая схема предотвращает приведение типов, но это не удается, когда я передаю неопределенное значение. На самом деле я хочу, чтобы значение было myDefaultString, если задано неопределенное значение.
const schema = yup.object().shape({
myField: yup.string().strict(true).default('myDefaultString')
});
C. Следующая схема имеет тот же результат, что и вариант B.
const schema = yup.object().shape({
myField: yup.string().strict(true).notRequired().default('myDefaultString')
});
D. Используйте strict: true
как часть параметров при использовании метода validateSync
для проверки схемы. Опять же, результат тот же, что и у B.
Буду признателен за любую помощь с этим, спасибо!