我无法找出yup为oneOfTypeScript 枚举生成架构的函数的正确类型。
以下内容按预期工作,返回类型为yup.MixSchema<SomeEnum>
const schema1 = yup.mixed<SomeEnum>().oneOf(Object.values(SomeEnum)); // yup.MixSchema<SomeEnum>
Run Code Online (Sandbox Code Playgroud)
如果我尝试创建一个通用函数来返回模式,我会得到返回类型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>
Run Code Online (Sandbox Code Playgroud)
https://codesandbox.io/s/yup-typescript-oneof-enum-vpvjn?file=/src/index.ts
我正在使用p-waterfall,我想知道如何使用提供的 TypeScript 类型。这是类型。
declare namespace pWaterfall {
type Task<ValueType, ReturnType> = (
previousValue: ValueType
) => ReturnType | PromiseLike<ReturnType>;
type InitialTask<ReturnType> = () => ReturnType | PromiseLike<ReturnType>;
}
declare const pWaterfall: {
<ReturnType>(tasks: [pWaterfall.InitialTask<ReturnType>]): Promise<ReturnType>;
<ValueType1, ReturnType>(
tasks: [
pWaterfall.InitialTask<ValueType1>,
pWaterfall.Task<ValueType1, ReturnType>
]
): Promise<ReturnType>;
<ValueType1, ValueType2, ReturnType>(
tasks: [
pWaterfall.InitialTask<ValueType1>,
pWaterfall.Task<ValueType1, ValueType2>,
pWaterfall.Task<ValueType2, ReturnType>
]
): Promise<ReturnType>;
...
Run Code Online (Sandbox Code Playgroud)
我把一个例子(下面的代码)放在一起,如果输入它真的可以帮助我理解如何让类型与p-waterfall一起工作。
import pWaterfall from "p-waterfall";
interface User {
name: string;
}
const getItemsRequest …Run Code Online (Sandbox Code Playgroud)