用于构造流类型的函数?

时间:2019-08-07 18:42:29

标签: flowtype

有什么办法可以做这样的事情吗?

// @flow
function FailureActionType(name: string): Type {
  return {type: name, error: string}
}

type SearchFailureAction = FailureActionType("SEARCH_FAILURE")

很显然,在return语句中键入/赋值的方式存在问题,但是这样可以使

type SearchFailureAction = { type: "SEARCH_FAILURE", error: string }

有什么办法吗?

1 个答案:

答案 0 :(得分:1)

您想要一个通用名称。

type FailureActionType<T: string> = { type: T, error: string }
  • 那里的<T>说这种类型取决于另一种类型。
  • <T: string>表示此从属类型必须是字符串类型。
  • { type: T, error: string }意味着结果类型必须在对象的type键上具有从属类型。

您可以通过在<>中传递T的值来使用它,如下所示:

type SearchFailureAction = FailureActionType<"SEARCH_FAILURE">

const action1: SearchFailureAction = { type: 'SEARCH_FAILURE', error: 'some error' }
const action2: SearchFailureAction = { type: 'BAD', error: 'some error' } // type error

flow.org/try Proof


泛型非常强大。阅读文档以获取更多信息。 https://flow.org/en/docs/types/generics/