やりたいこと
enumのバリデーション
ここで紹介されている。
https://github.com/jquense/yup/issues/1013#issuecomment-679113073
コード
import * as yup from "yup";
enum Status {
Success = "Success",
Failure = "Failure"
}
const schema = yup.object({
status: yup.mixed<Status>().oneOf(Object.values(Status)).required(),
});
説明
mixed<Status>()
で型を指定しoneOf(Object.values(Status))
で取りうる値を指定する。
mixed<Status>()
でバリデーション後の値の型がStatus
になる。
mixed<Status>()
だけだと各列挙子以外の文字列も有効判定になってしまうためoneOf(Object.values(Status))
で列挙子を指定する。