在Flow中使用星号(*)类型有什么用,在TypeScript中有什么用呢?

Nev*_*oon 23 javascript types flowtype

首先,我大多熟悉TypeScript.Flow在许多方面看起来与TS非常相似,但我最近偶然发现了一个星号(*)类型.起初,我认为它是"any"的同义词,但是现在,在阅读了Flow的一些发行说明后,我发现它并非如此.我浏览了所有官方文档,但未能找到"*"的任何用法.

那么,它是什么以及何时使用它?但是,什么是TypeScript中的直接等价物?

Nat*_*ote 22

它只是告诉Flow推断一个类型参数,而不是让你明确地写出来:

function foo(): Array<*> {
  return [5];
}

// Flow issues an error:
//    2:   return [5];
//                 ^ number. This type is incompatible with
//    10: (foo(): Array<string>);
//                     ^ string
(foo(): Array<string>);
Run Code Online (Sandbox Code Playgroud)

(尝试流程)

这是从不同的*- any是不安全的类型,因此,如果您更换any*在这个例子中,流量不会给你任何错误.你可以替换它,anyFlow会给你一个类似的错误.