【发布时间】:2018-07-15 23:54:18
【问题描述】:
在 redux 中,状态应该是不可变的。我希望 Flow 阻止任何人改变该状态。所以,给定一个任意深度的对象:
type object = {
a: {
b: {
d: string
}
},
c: number
}
如何创建一个递归只读的新类型,以便我不能这样做:
let TestFunction = (param: $RecursiveReadOnly<object>) => {
param.a.b.d = 'some string'
}
Flow 的内置 $ReadOnly 实用程序将创建这样的类型,这不是需要的,因为 b 和 d 仍然是可写的:
{
+a: {
b: {
d: string
}
},
+c: number
}
我一直在尝试使用 $Call 和 $ObjMap(i),但我不知道如何在 Flow 中递归地移动对象。我们的目标是:
{
+a: {
+b: {
+d: string
}
},
+c: number
}
【问题讨论】:
-
我让它在函数之外工作,但不在函数内部。也许这会有所帮助:try flow