可以在这个特定的功能上下文中强制执行类型吗?

Possible to enforce type in this specific functional context?

我正在使用具有特定语法的 lodash,并且我想使用 facebook flowtype 强制类型。这是代码:

 let errorMessageBag = _.flow( objectWithFieldsToValidate, requiredFields, 
                             stringLengthValidationCheck, emailValidation)
 let result = errorMessageBag(fields, linkmodel())

我想强制执行 errorMessageBag 调用以传递 2 个参数、字段和 linkmodel()。为了简单起见,假设我希望它们是 string,string.

流参数是下面函数的名称。这是第一个接受 2 个参数的 objectWithFieldsToValidate,但如果我输入它们,它就不会传播。无论如何要解决这个问题?

一个简单的解决方法是将 errorMessageBag(fields, linkmodel()) 封装到一个具有易于键入参数的函数中。所以你最终调用了 return errorMessageBag(fields, linkmodel()) .

的新函数

这个怎么样:

// assuming `void` is the return type of validation
let errorMessageBag: (x: string, y: string) => void = ...; 
let result = errorMessageBag(fields, linkmodel())