【问题标题】:Yup oneOf TypeScript Enum Generic Fucntion是的,一个 TypeScript 枚举通用函数
【发布时间】:2020-06-03 16:30:24
【问题描述】:

对于使用 TypeScript 枚举为 oneOf 生成 yup 架构的函数,我无法找出正确的类型。


跟随按预期工作,返回类型为yup.MixSchema<SomeEnum>

const schema1 = yup.mixed<SomeEnum>().oneOf(Object.values(SomeEnum)); // yup.MixSchema<SomeEnum>

如果我尝试创建一个通用函数来返回架构,我会得到yup.MixSchema&lt;typeof SomeEnum&gt; 的返回类型。注意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

【问题讨论】:

    标签: typescript enums yup


    【解决方案1】:

    您可以这样解决这个问题(更改参数类型以匹配 Object.values 的参数):

    const oneOfEnum = <T>(enumObject: { [s: string]: T } | ArrayLike<T>) =>
      yup.mixed<T>().oneOf(Object.values(enumObject));
    

    【讨论】:

      猜你喜欢
      • 2021-02-09
      • 2019-05-19
      • 1970-01-01
      • 1970-01-01
      • 2016-12-26
      • 2021-10-21
      • 2018-03-26
      • 2017-12-08
      • 1970-01-01
      相关资源
      最近更新 更多