メインコンテンツにスキップ

コメント型

Flow はコメントベースの構文をサポートしており、ファイルをコンパイルせずに Flow を利用することができます。

1/*::2type MyAlias = {3  foo: number,4  bar: boolean,5  baz: string,6};7*/8
9function method(value /*: MyAlias */) /*: boolean */ {10  return value.bar;11}12
13method({foo: 1, bar: true, baz: ["oops"]});
13:33-13:40: Cannot call `method` with object literal bound to `value` because array literal [1] is incompatible with string [2] in property `baz`. [incompatible-call]

このコメントにより、Flow は追加の作業なしにプレーン JavaScript ファイル内で動作します。

コメント型の構文

この構文には、型インクルードと型注釈という 2 つの主要な部分があります。

型インクルードコメント

コメントを通常の構文として Flow に認識させたい場合は、コメントの先頭に二重コロン :: を追加します

1/*::2type MyAlias = {3  foo: number,4  bar: boolean,5  baz: string,6};7*/8
9class MyClass {10  /*:: prop: string; */11}

これにより、Flow が認識する構文にコードが組み込まれます

1type MyAlias = {2  foo: number,3  bar: boolean,4  baz: string,5};6
7class MyClass {8  prop: string;9}

ただし、JavaScript はこれらのコメントを無視するため、コードは有効な JavaScript 構文になります

1class MyClass {2
3}

この構文は flow-include 形式でも使用できます

1/*flow-include2type MyAlias = {3  foo: number,4  bar: boolean,5  baz: string,6};7*/8
9class MyClass {10  /*flow-include prop: string; */11}

型注釈コメント

毎回完全なインクルードを入力する代わりに、1 つのコロン : をコメントの先頭に付けて型注釈の省略形を使用することもできます。

1function method(param /*: string */) /*: number */ {2  return 1;3}

これは、インクルードコメント内で型注釈をインクルードするのと同じになります。

1function method(param /*:: : string */) /*:: : number */ {2  return 1;3}

注: 任意の関数の引数を使用する場合は、インクルードコメント形式を使用する必要があります。


感謝: Jarno Rantanen flotate を開発し、その構文を Flow に統合できたことに対して、感謝しています。