我如何注释我想要任何类型作为输入,但与 Flow 的输出类型相同?
How can I annotate I want any type as input but something of the same type as output with Flow?
假设我有一个非常简单的函数,它只接受任何类型的参数并将其包装在一个数组中。
function wrap (anything) {
return [anything]
}
这在(我理解的)Hindley-Milner 注释中很容易描述,如下所示:
// wrap :: a -> [a]
我将如何使用 Flow 的类型注释来显示同样的事情,即我想要任何类型作为输入,以及相同类型的数组作为输出?
以下无效:
function wrap (anything: a): Array<a> {
return [anything]
}
它抛出这个错误:
ERROR in src/wrap.js:1
1: function wrap(x: a): Array<a> {
^ identifier `a`. Could not resolve name
这是 polymorphic functions 的语法:
function wrap<a>(anything: a): Array<a> {
return [anything]
}
假设我有一个非常简单的函数,它只接受任何类型的参数并将其包装在一个数组中。
function wrap (anything) {
return [anything]
}
这在(我理解的)Hindley-Milner 注释中很容易描述,如下所示:
// wrap :: a -> [a]
我将如何使用 Flow 的类型注释来显示同样的事情,即我想要任何类型作为输入,以及相同类型的数组作为输出?
以下无效:
function wrap (anything: a): Array<a> {
return [anything]
}
它抛出这个错误:
ERROR in src/wrap.js:1
1: function wrap(x: a): Array<a> {
^ identifier `a`. Could not resolve name
这是 polymorphic functions 的语法:
function wrap<a>(anything: a): Array<a> {
return [anything]
}