微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

零个或所有可选但键入的参数

如何解决零个或所有可选但键入的参数

我即将学习一些类型化函数式编程,所以刚开始实现部分应用程序 - 这应该是类型安全的。

问题:我正在尝试创建一个函数,该函数一个函数及其零个或所有参数作为参数。

所以我从那个界面开始

interface Functor {
  (...args: any[]) => any
}

又来到了这个函数

const partial = <T extends Functor>(fx: T,...apply: Parameters<T>): Functor =>
  (...args: any[]) => fx(...apply,...args);

这里的问题是,...args: Parameter<T> 指示打字稿要求 所有 参数,但我希望允许 全部为零

有没有办法做到这一点?

解决方法

您可以定义类似于内置 PartialParametersParameters 实用程序:

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)

Playground

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。