【发布时间】:2018-01-31 02:48:04
【问题描述】:
我对如何使用 Flow 键入具有默认属性的对象有点困惑。
例如,我有一个函数接受具有默认属性的对象,如下所示:
function load({ p = 1, pp = 5 }: Payload) {
return {
p,
pp
};
}
如果我这样定义 Payload 的类型:
type Payload = {
p: ?number,
pp: ?number
}
Flow 会抱怨(显然,因为对象的字段不再可以为空)。请参阅Try Flow 上的示例
如果我重新定义 Payload 使其字段不再可以为空,Flow 会很高兴;但这当然会导致无法实际使用默认属性,如下例所示:
type Payload = {
p: number,
pp: number
}
function load({ p = 1, pp = 5 }: Payload) {
return {
p,
pp
};
}
function test() {
let p = null;
let pp = 5
load({p, pp})
}
Try Flow 上的示例
在 Flow 中使用默认对象属性的正确方法是什么?
【问题讨论】:
-
不幸的是,这似乎是 Flow 的一个错误。这里有一个关于它的open issue。
标签: flowtype