gpt4 book ai didi

typescript - 零个或所有可选但类型化的参数

转载 作者:行者123 更新时间:2023-12-04 15:09:02 26 4
gpt4 key购买 nike

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

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

所以我从那个界面开始

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

然后来到这个函数:

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

这里的问题是,...args: Parameter<T>指示 typescript 要求所有参数,但我希望允许零到所有

有什么办法吗?

最佳答案

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

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

关于typescript - 零个或所有可选但类型化的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65558624/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com