2017-01-29 6 views
3

私は、次のオブジェクトの宣言があります。少なくとも1つのプロパティを持つ必要があるオブジェクトのフロータイプを定義する方法は?

type QueryQuantifierType = { 
    +max?: number, 
    +min?: number, 
    +multiple?: boolean 
}; 

それは許可されます。これらは有効な値です

{ 
    min: 1 
} 

{ 
    max: 1 
} 

{ 
    max: 1, 
    min: 1 
} 

{ 
    min: 1, 
    multiple: true 
} 

{ 
    max: 1, 
    multiple: true 
} 

を。

しかし、問題はそれもpermits an empty objectです。

少なくとも1つのプロパティを持つ必要があるオブジェクトのフロータイプを定義するにはどうすればよいですか?

答えて

1

私はこれを行う方法を考え出した唯一の方法はunionexactのオブジェクト使用されます。記録のために

type QuantifierType = 
    {| 
    +max: number, 
    +min?: number, 
    +multiple?: boolean 
    |} | 
    {| 
    +max?: number, 
    +min: number, 
    +multiple?: boolean 
    |} | 
    {| 
    +max?: number, 
    +min?: number, 
    +multiple: boolean 
    |}; 
+0

を、 'Infinity'などを使用している場合、このアプローチに関連したバグ(おそらく)があります「数値」値。 https://github.com/facebook/flow/issues/3296 – Gajus

+0

これを行うための現代的な方法が見つかりましたか? '+'プレフィックスは何を意味しますか? – Noitidart

関連する問題