跳至主要內容

類型註解

新增類型註解是您與 Flow 互動的重要部分。

Flow 擁有強大的能力,可以推斷程式碼的類型。例如,您不必為 Array.map 等常見模式產生註解

1["foo", "bar"].map(s => ( // s is inferred to have type string2  s.length3));

不過,有些地方您會想要新增類型。

想像一下以下 concat 函式,用於將兩個字串串接在一起。

1function concat(a, b) {
2 return a + b;3}
1:17-1:17: Missing an annotation on `a`. [missing-local-annot]
1:20-1:20: Missing an annotation on `b`. [missing-local-annot]

您需要在 concat 的參數上新增註解,以便 Flow 可以檢查其主體的類型。現在,如果您使用意外的類型呼叫此函式,您會收到 Flow 的警告。

1function concat(a: string, b: string) {2  return a + b;3}4
5concat("A", "B"); // Works!6concat(1, 2); // Error!
6:8-6:8: Cannot call `concat` with `1` bound to `a` because number [1] is incompatible with string [2]. [incompatible-call]
6:11-6:11: Cannot call `concat` with `2` bound to `b` because number [1] is incompatible with string [2]. [incompatible-call]

本指南將教導您在 Flow 中所有不同類型的語法和語意。