Yupのcastエラーを任意のメッセージに変える
yupのYup.date().required('プロパティは必須です')
のようなメッセージを出すと思うんですが、Yup.date()
の変換に失敗した場合に出るメッセージの指定方法がぱっとわからなかったのでメモ
tl;dr
typeError
を使う
そもそもの発端
他の主要ブラウザは対応してるんだけど、mac版のsafariは次のsafari 14.1じゃないとinput type=date
が対応してなくてinput
要素が実質text
になってた
なので日付以外の値や入力中の日付*1が入った際にdate
に変換できないエラーが出ていた
XXXXX must be a `date` type, but the final value was: `Invalid Date` (cast from the value `"2020-09-"`).
解決方法
datepicker自体は次のバージョンで入るのと各実装で違うので置いておいて、エラーメッセージ自体はtypeError
を使うことで設定できた
Yup.date().typeError('invalid!!')
余談
他のものはrequired('error message')
のようにバリデーションに引数でメッセージを取るけど、date
みたいなものはdate
自体がエラーメッセージを取るのではなくtypeError
のようなものがあることに気づくのに地味に時間がかかった。。
*1:'2020-'とか