仍然很难在react / redux应用程序中使用Flow检查所有内容。
在输入我的动作时,我得到:
type MessageSentAction = { type: 'MSG_SENT',
message: string,
}
type Action = MessageSentAction | AnotherAction;
没有问题,但我想用常量替换MSG_SENT类型。
const actionTypes = { MESSAGE_SENT = 'MSG_SENT'}
...
type MessageSentAction = { type: ActionTypes.MESSAGE_SENT,
message: string,
}
我怎样才能让它发挥作用?我不希望动作字符串在动作,缩减器和类型之间重复... 上面的示例给出了一个错误:"在/作为流类型注释中使用的不合格值。"
答案 0 :(得分:2)
您可以使用typeof
运算符
const actionTypes = { MESSAGE_SENT: 'MSG_SENT'}
type MessageSentAction = {
type: typeof actionTypes.MESSAGE_SENT,
message: string,
}
答案 1 :(得分:0)
刚刚找到它......供参考:
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值中的内容时,我会收到流错误。
这与之前的答案不同,任何给定的字符串都可以