【发布时间】:2020-12-03 03:12:32
【问题描述】:
问题
我有以下通用函数类型:
type Validator<TInput, TOutput extends TInput> = (value: TInput) => Validated<TOutput>;
现在我想实现这个类型,所以我做了以下操作:
const isNotNull: Validator<T | null, T> = <T>(value: T | null): Validated<T> => {
// Implementation here
};
这不起作用,因为在定义之前使用了T。
我知道我可以推断出 isNotNull 的类型,但我想明确将其声明为 Validator 作为约束。我该怎么做?
上下文
此Validator 类型将用作函数参数,如下所示:
function validate<TInput, TOutput>(
value: TInput,
validator: Validator<TInput, TOutput>
): TOutput {}
当然实际上不需要这个功能。实际情况更复杂,但我已将其精简到最低限度。
这就是为什么Validator 必须是通用的。
【问题讨论】:
标签: typescript generics typescript-generics