2017-12-11 27 views
-1

내 react/redux 응용 프로그램에서 Flow를 사용하여 모든 것을 확인하는 데 여전히 어려움이 있습니다. Flowtype enum actions redux

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

그와 아무 문제가 없지만, 나는 상수 타입 MSG_SENT를 교체하려면 : 내 행동을 입력 할 때

, 내가 얻을.

어떻게 작동합니까? 액션 문자열이 액션, 리듀서 및 유형간에 중복되는 것을 원하지 않습니다 ... 위의 샘플은 오류를 제공합니다 : "/로 플로우 유형 주석에 부적합 값 사용."

답변

2

당신은 참조를 위해 ...

const actionTypes = { MESSAGE_SENT: 'MSG_SENT'} 

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

완전히 동일하지 ... 형식으로 모든 유형을 정의 할 때 'MSG_SENT'종류 이상의 다른 값을 할당 할 때, 나는 오류가 발생합니다 주어진. typeof를 사용할 때 ... 또한 타입을 타입으로 정의 할 수도 있습니다 : string – Yoeri

+0

OK, 그 질문에서 명확하지 않았습니다. 하지만 이미 솔루션을 찾은 것을 보았습니다. –

0

그냥 그것을 발견 typeof 연산자를 사용할 수 있습니다 :

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'; 
} 

것은 뭔가 t.type을 변경하는 것이 아니라 ACTION_TYPES 값에, 난거야 때 흐름 오류.

특정 문자열이 확인 될 곳은 이전의 대답과 다른