为什么流使用对象作为参考在这里抛出错误:

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

不幸的是,对于您的用例,您可能不得不再次在类型中写出字符串文字。

09-25 16:30