もしschemaの構造がtypeと異なるとエラーとなる。
import { ObjectSchema, object, number, string } from "yup";type User = { name: string; age: number; email?: string;};const schema: ObjectSchema<User> = object({ name: string().required(), age: number().required().positive().integer(), email: string().email()});
上記と同じtypeが生成される。
import { ObjectSchema, object, number, string, InferType } from "yup";const schema = object({ name: string().required(), age: number().required().positive().integer(), email: string().email()});type User = InferType<typeof schema>;
react-hook-formのresolverとして使うことが多いのでその場合の方法。
import { yupResolver } from "@hookform/resolvers/yup";import { ObjectSchema, object, number, string } from "yup";type User = { name: string; age: number; email?: string;};const resolver = yupResolver<User>( object({ name: string().required(), age: number().required().positive().integer(), email: string().email() }));