typescript 对函数参数使用Union引发类型错误

wz3gfoph  于 2022-12-14  发布在  TypeScript
关注(0)|答案(1)|浏览(155)

我有以下类型,它们被设置为处理2个不同的表单提交,其中2个不同的对象作为函数中的参数。

interface FormValues {
  firstNames: string;
  middleNames: string;
  surname: string;
}

interface PasswordFormValues {
  password: string;
  confirmPassword: string;
}

type FormSubmit = (values: FormValues | PasswordFormValues) => Promise<void>

interface ProfileFormProps {
  onFormSubmit: (values: FormValues | PasswordFormValues) => Promise<void>;
}

但是,如果尝试使用FormSubmit类型为函数中的参数传入任何一种类型,则会出现以下类型错误。
第一次
如何在使用FormSubmit类型的函数中将任一对象作为参数传递?
我有一个有问题的TypeScriptPlaygroundURL

klr1opcd

klr1opcd1#

只需将处理程序更改为接受FormValuesPasswordFormValues的 * 任一a处理程序:

interface ProfileFormProps {
  onFormSubmit: ((values: FormValues) => Promise<void>) | ((values: PasswordFormValues) => Promise<void>);
}

也就是说,这会让您看到有人配置一个只 * 产生 * FormValues的表单,并提供一个只消耗PasswordFormValuesonFormSubmit

相关问题