小编Sam*_*Sam的帖子

在FlowJS中递归创建ReadOnly对象

在redux中,状态应该是不可变的。我希望Flow可以防止任何人改变该状态。因此,给定任意深度的对象:

type object = {
  a: {
    b: {
      d: string
    }
  },
  c: number
}
Run Code Online (Sandbox Code Playgroud)

我如何创建一个递归只读的新类型,所以我不能这样做:

let TestFunction = (param: $RecursiveReadOnly<object>) => {
  param.a.b.d = 'some string'
}
Run Code Online (Sandbox Code Playgroud)

$ReadOnlyFlow 的内置实用程序将创建这样的类型,这不是必需的,因为bd仍可写:

{
  +a: {
    b: {
      d: string
    }
  },
  +c: number
}
Run Code Online (Sandbox Code Playgroud)

我一直在尝试使用$Call$ObjMap(i),但是我不知道如何在Flow中递归地移动对象。目的是要做到这一点:

{
  +a: {
    +b: {
      +d: string
    }
  },
  +c: number
}
Run Code Online (Sandbox Code Playgroud)

recursion flowtype redux

6
推荐指数
1
解决办法
356
查看次数

标签 统计

flowtype ×1

recursion ×1

redux ×1