カスタムフロータイプを定義しました
export type MyType = {
code: number,
type: number = 1,
}
値が存在しない場合、type
パラメーターを1
としてデフォルト設定する必要があります。ただし、FlowはUnexpected token =
で苦情を言っています。
これはFlowで実行できますか?
現在Flow v0.32.0
を使用しています。
型宣言にデフォルトを設定することはできません。
クラスを使用し、プロパティ初期化子を使用してデフォルトを初期化します: https://basarat.gitbooks.io/TypeScript/content/docs/classes.html#property-initializer
関数パラメーターにはデフォルトを設定することもできます。これは、ECMAScript 2015の機能です。
function method(value: string = "default") { /* ... */ }
セットのタイプに加えて、デフォルトのパラメーターを無効にするか、完全に省略することもできます。ただし、それらをヌルにすることはできません。
// @flow
function acceptsOptionalString(value: string = "foo") {
// ...
}
acceptsOptionalString("bar");
acceptsOptionalString(undefined);
acceptsOptionalString(null);
acceptsOptionalString();
https://flow.org/en/docs/types/primitives/#toc-function-parameters-with-defaults
@basaratが提案するアイデアに進み、クラスを使用します。クラスは、タイプと値の両方として存在します。
値は初期化できます。 Flowは、提案されたプロパティ初期化構文を認識するため、Flow(タイプ用)およびbabel(提案された機能サポート用)を使用して、 this のようにクラスを宣言できます。
// @flow
export class MyType {
code: number;
type: number = 1;
};
フローおよびそれによって定義できるタイプは、javascriptランタイムには存在しません。それが、型宣言が値初期化子をサポートしない理由です。