代码之家  ›  专栏  ›  技术社区  ›  codeBelt

TypeScript枚举泛型函数之一

  •  1
  • codeBelt  · 技术社区  · 6 年前

    yup 的架构 oneOf 使用TypeScript枚举。


    yup.MixSchema<SomeEnum>

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

    如果我试图创建一个泛型函数来返回模式,我得到的返回类型是 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

    1 回复  |  直到 6 年前
        1
  •  1
  •   Mike Jerred    6 年前

    Object.values ):

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