将部分应用函数暴露给应用程序

时间:2018-01-31 09:17:18

标签: javascript configuration functional-programming currying partial-application

我正在处理包含许多验证器的验证库。每个验证器都带有一条消息作为第一个参数,后跟任何配置值。

库的用户可以传入消息函数的映射,该映射将由库应用于验证器。

const configuredValidators = Lib.configure(messages);

如果在没有此配置步骤的情况下使用这些验证器,可以将它们导入到需要它们的文件中:

import { exampleValidator } from 'lib'

但是,通过预先配置验证器,库的用户现在需要将这些验证器传递给需要它们的任何函数。如果这些函数距离配置点很远,那么现在需要添加一个参数来传递配置的验证器。

当采用OO方法时,这个问题有很多解决方案,但功能解决方案是什么?如何在整个应用程序中使用这些部分应用的验证器,而无需用户混淆许多其他功能的签名?

据我所知,从函数内部向外部变量的引出会引发纯度问题,但我想我正在寻找导入的便利,但是在运行时部分应用了值的函数。 / p>

注意:出于本问题的目的,假设图书馆的用户将采用功能性方法。

1 个答案:

答案 0 :(得分:1)

我认为这不是你的问题。 :-)您的用户可以使用导出配置的验证器的模块解决此问题:

export const configuredValidators = Lib.configure(messages); // Or similar

然后他们只是从该模块导入而不是直接从库中导入验证器。