是的,一个 TypeScript 枚举泛型函数
Yup oneOf TypeScript Enum Generic Fucntion
我无法找出使用 TypeScript 枚举为 oneOf
生成 yup
模式的函数的正确类型。
以下内容按预期工作,并且 return 类型为 yup.MixSchema<SomeEnum>
const schema1 = yup.mixed<SomeEnum>().oneOf(Object.values(SomeEnum)); // yup.MixSchema<SomeEnum>
如果我尝试为 return 架构创建一个通用函数,我会得到 return 类型的 yup.MixSchema<typeof SomeEnum>
。注意 typeof
.
const oneOfEnum = <T>(enumObject: T) =>
yup.mixed<T>().oneOf(Object.values(enumObject));
const schema2 = oneOfEnum(SomeEnum); // yup.MixSchema<typeof SomeEnum>
https://codesandbox.io/s/yup-typescript-oneof-enum-vpvjn?file=/src/index.ts
您可以像这样解决这个问题(更改参数类型以匹配 Object.values
的参数):
const oneOfEnum = <T>(enumObject: { [s: string]: T } | ArrayLike<T>) =>
yup.mixed<T>().oneOf(Object.values(enumObject));
我无法找出使用 TypeScript 枚举为 oneOf
生成 yup
模式的函数的正确类型。
以下内容按预期工作,并且 return 类型为 yup.MixSchema<SomeEnum>
const schema1 = yup.mixed<SomeEnum>().oneOf(Object.values(SomeEnum)); // yup.MixSchema<SomeEnum>
如果我尝试为 return 架构创建一个通用函数,我会得到 return 类型的 yup.MixSchema<typeof SomeEnum>
。注意 typeof
.
const oneOfEnum = <T>(enumObject: T) =>
yup.mixed<T>().oneOf(Object.values(enumObject));
const schema2 = oneOfEnum(SomeEnum); // yup.MixSchema<typeof SomeEnum>
https://codesandbox.io/s/yup-typescript-oneof-enum-vpvjn?file=/src/index.ts
您可以像这样解决这个问题(更改参数类型以匹配 Object.values
的参数):
const oneOfEnum = <T>(enumObject: { [s: string]: T } | ArrayLike<T>) =>
yup.mixed<T>().oneOf(Object.values(enumObject));