flowtypeで分離した結合を絞り込むためにオンラインで見つかったすべての例は、the official oneなどの文字列リテラルを使用します。私のような列挙型から値に対してチェックする方法があるかどうかを知りたい:リテラル文字列を使用してフロー内の個別化された共用体を絞り込む方法
const ACTION_A = 'LITERAL_STRING_A';
const ACTION_B = 'LITERAL_STRING_B';
type ActionA = {
// This is not allowed
type: ACTION_A,
// type: 'LITERAL_STRING_A' is allowed
dataA: ActionAData,
}
type ActionB = {
// This is not allowed
type: ACTION_B,
// type: 'LITERAL_STRING_B' is allowed
dataB: ActionBData,
}
type Action = ActionA | ActionB;
function reducer(state: State, action: Action): State {
// Want to narrow Action to ActionA or ActionB based on type
switch (action.type) {
// case 'LITERAL_STRING_A': -- successfully narrow the type
case ACTION_A: // doesn't work
// action.dataA is accessible
...
}
...
}
文字列は型注釈として不適格であるため、残念ながら、あなたがこれらの操作を行うことはできません。
これ以外の方法で文字列リテラルを入力する必要がない場合は、どこでも知りたいと思います。
回避策がない場合は、これらの分離セットをレビュックスアクションに定義する必要がない方法を、より高いレベルで受け入れます。
だっ行うことができます:私が正しくリコール場合は、長い労働組合を定義するための少しよりよい構文が最近の流れでご紹介しましたアクションタイプをActionAタイプまたはActionBタイプに絞り込むことを尋ねる。そうすれば、私は、各サブタイプのフィールドに、不平を言うことなくフィールドにアクセスできるようになります。例ではリテラル文字列を使っていることがわかりますが、可能であれば列挙型で知りたいのです – xvaldetaro
@xvaldetaroああ、私は質問を更新してくれてありがとう。それは変だ。定数によるリファインは、文字列リテラルによるリファインと同じように機能するはずです。おそらく 'type:typeof ACTION_A'が動作するでしょうか? – Nikita