通过通用参数禁用属性

时间:2018-05-23 11:38:47

标签: javascript flowtype

假设你有类似的类型:

type T<E> = {| p: E |}

是否有办法为E提供删除属性p的特定参数。

我的直觉是void应该这样做,但是当我尝试

const a: T<void> = {}

流程抱怨p未定义。它仅在我专门指定p

时才有效
const b: T<void> = { p: undefined }

有没有办法用这种方式关闭某些属性?

try flow version

如果要为redux操作

创建泛型类型别名,这将非常有用
type Action<T: string, P, M> = {|
    type: T,
    payload: P,
    meta: M
|}

具体行动的类型为

type SomeAction = Action<'SOME_ACTION', SomePayload, SomeMeta>

但是,操作通常不包含meta信息。能够为这些操作使用相同的通用基类型会很好。

type NoMetaAction = Action<'NO_META', NoMetaPayload, void>

这是别的,然后meta是可选的。如果某个操作类型带有meta信息而不是它始终带有信息,反之亦然。

try flow version

0 个答案:

没有答案