为什么流使用对象作为参考在这里抛出错误:
type LoadUserData = { type: actionTypes.LOAD_USER_DATA, user: User };
但是,当使用字符串时,不会引发任何错误:
type LoadUserData = { type: "LOAD_USER_DATA", user: User };
引发的错误是:
Error:(8, 29) Flow: string. Ineligible value used in/as type annotation (did you forget 'typeof'?) LOAD_USER_DATA
最佳答案
您可以按照建议使用typeof
,但这可能无法满足您的要求:
const actionTypes = {
LOAD_USER_DATA: 'foo'
}
type LoadUserData = { type: typeof actionTypes.LOAD_USER_DATA};
({type: 'bar'}: LoadUserData) // no errors
发生这种情况是因为Flow推断
actionTypes.LOAD_USER_DATA
的类型为string
。不幸的是,对于您的用例,您可能不得不再次在类型中写出字符串文字。