2016-12-20 4 views
2

ich eine mehrere Subtypen im Aktions Schöpfer in redux definieren:Fluss nicht schließen nicht richtig eingegeben

Aktion Schöpfer:

export type Action = { type: "SELECT", index: number } | { type: "OTHER" }; 

Reducer:

module.exports = (state: string = "", action: Action): string => { 
    switch (action.type) { 
     case "SELECT": 
      return action.index; 
     default: 
      return state; 
    } 
}; 

aber wenn ich definieren WÄHLEN Sie in einer Konstante const select = "SELECT" und implementieren Sie es in den Code oben Ich erhalte eine Fehlermeldung:

property `index`. Property not found in object type 

Hinweis: Unter Strömungsmuster, wie es F8 App ist:

https://github.com/fbsamples/f8app/blob/master/js/actions/types.js

Wie es durch die Vermeidung mit "SELECT" Schlüsselwort sowohl in der Aktion und im Minderer implementieren sollten ?

Antwort

1

Normalerweise hätten Sie eine andere Konstante mit dem Aktionstyp, die sowohl für Ihre Aktion als auch für Ihre Reduzierung verwendet würde.

const SELECT = 'SELECT'; 

oder noch besser (um Konflikte zu vermeiden):

const SELECT = 'redux/<module>/SELECT'; 

In der gleichen Aktion Datei oder in einer anderen (das ist völlig bis zu Ihnen). Dann exportieren Sie einfach wie export const SELECT, und importieren Sie wie import { SELECT } from './constants'.

Sie sollten auch einen Blick auf redux-ducks werfen, könnte von Interesse sein.

EDIT:

Sie verwenden bitwise OR zur Gruppe alle möglichen verschiedenen Aktionsfälle. Dies hilft beim Testen, ob der Code syntaktisch korrekt ist mit flow (indem Sie die übergebenen Aktionen so einstellen, dass sie dem Typ Action entsprechen). Siehe ihre vollständige Erklärung here.

Das nimmt nicht die Tatsache weg, dass sie die Aktion mit ihrem gewünschten Aktionstyp zwar versenden müssen. login

+0

Danke, aber meine Frage konzentriert sich darauf, wie der Fluss verschiedene Typen versteht, die durch "oder" - Operator gespalten sind. – locropulenton

+1

@alejandrogarciaoblesinteressante Frage +1, musste selbst recherchieren, aber es war es wert. Lassen Sie es mich wissen, wenn der Bearbeitungsteil alles ist, was Sie sich freuten. – zurfyx