如何解决零个或所有可选但键入的参数
我即将学习一些类型化函数式编程,所以刚开始实现部分应用程序 - 这应该是类型安全的。
问题:我正在尝试创建一个函数,该函数将一个函数及其零个或所有参数作为参数。
所以我从那个界面开始
interface Functor {
(...args: any[]) => any
}
又来到了这个函数:
const partial = <T extends Functor>(fx: T,...apply: Parameters<T>): Functor =>
(...args: any[]) => fx(...apply,...args);
这里的问题是,...args: Parameter<T>
指示打字稿要求 所有 参数,但我希望允许 全部为零
有没有办法做到这一点?
解决方法
您可以定义类似于内置 PartialParameters
的 Parameters
实用程序:
type PartialParameters<T> = T extends (...args: infer P) => any ? Partial<P> : never;
const partial = <T extends Functor>(fx: T,...apply: PartialParameters<T>): Functor =>
(...args: any[]) => fx(...apply,...args);
declare function foo(a: string,b: number): boolean;
partial(foo)
partial(foo,'1')
partial(foo,'1',1)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。