2017-12-11 2 views
-1

Es ist immer noch schwierig, alles mit Flow in meiner react/redux-Anwendung zu überprüfen.Flowtype enum actions redux

Wenn meine Handlungen eingeben, erhalte ich:

type MessageSentAction = { type: 'MSG_SENT', 
    message: string, 
} 
type Action = MessageSentAction | AnotherAction; 

haben keine Probleme damit, aber ich mag die Art Msg_Sent mit einer Konstante ersetzen.

const actionTypes = { MESSAGE_SENT = 'MSG_SENT'} 
... 
type MessageSentAction = { type: ActionTypes.MESSAGE_SENT, 
    message: string, 
} 

Wie kann ich das zur Arbeit bringen? Ich möchte nicht, dass der Aktions-String über Aktionen, Reduzierungen und Typen dupliziert wird. Das obige Beispiel gibt einen Fehler: "Nicht zulässiger Wert in/als Fließkomma-Annotation verwendet."

Antwort

2

können Sie verwenden typeof Operator

const actionTypes = { MESSAGE_SENT: 'MSG_SENT'} 

type MessageSentAction = { 
    type: typeof actionTypes.MESSAGE_SENT, 
    message: string, 
} 
+0

Nicht ganz das gleiche wäre in Ordnung ... wenn alle Arten als Art definieren: ‚Msg_Sent‘, werde ich eine Fehlermeldung erhalten, wenn ein anderer Wert als die Typen zuweisen gegeben. Bei der Verwendung von typeof ... könnte ich auch einfach Typ als Typ definieren: string – Yoeri

+0

OK, das war nicht klar aus der Frage. Aber ich sehe, Sie haben bereits die Lösung gefunden, Prost –

0

gerade gefunden ... Referenz:

const ACTION_TYPES = { MESSAGE_SENT: 'MSG_SENT', TEST: 'test'}; 
type ActionType = $Values<typeof ACTION_TYPES>; 

type MessageSentAction = { type: ActionType, 
    message: string, 
} 

function test(t: MessageSentAction) { 
    t.type = 'MSG_SENT'; 
} 

Beim Wechsel t.type etwas nicht in den ACTION_TYPES Werte, ich werde erhalten ein Fließfehler.

Diese aus früheren Antwort unterscheidet, wo eine gegebene Zeichenfolge

Verwandte Themen