我怎么能注释我想要任何类型的输入,但与流输出相同类型的东西

How can I annotate I want any type as input but something of the same type as output with Flow?

本文关键字:输出 同类型 注释 怎么能 我想要 任何 输入 类型      更新时间:2023-09-26

假设我有一个非常简单的函数,它只是接受任何类型的参数并将其包装在一个数组中。

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

多态函数的语法:

function wrap<a>(anything: a): Array<a> {
  return [anything]
}