【发布时间】:2017-08-12 06:10:23
【问题描述】:
我几乎没有学习流程,但根据文档,以下代码应该给我一个错误,因为我正在解构对象并将默认值分配给不是布尔值的“overrideKeyProp”。
没问题,没有错误:
type KeyGenCfgType = {|
topic: Topic,
keyProp?: string,
overrideKeyProp?: boolean
|};
function cfgTypeKeyGen(kGen: KeyGenCfgType) {
const { keyProp, overrideKeyProp = 1 } = kGen;
}
这给了我一个关于属性 overrideKeyProp 的不匹配类型的错误:
type KeyGenCfgType = {|
topic: Topic,
keyProp?: string,
overrideKeyProp?: boolean
|};
function cfgTypeKeyGen({ keyProp, overrideKeyProp = 1 }: KeyGenCfgType) {
}
//number: This type is incompatible with boolean
这也给了我一个错误:
type KeyGenCfgType = {|
topic: Topic,
keyProp?: string,
overrideKeyProp?: boolean
|};
function cfgTypeKeyGen(kGen: KeyGenCfgType) {
const { keyProp, overrideKeyProp = 1, nope } = kGen;
}
// property `nope`: Property not found in object type
因此它能够识别出我正在尝试解构一个不在我为其定义的流类型中的属性,但它无法识别我没有在属性上分配正确类型的值,除非我在函数的签名中进行解构。
【问题讨论】:
-
将代码放入问题中,而不是图像。我们无法从图像中复制粘贴文本。
-
@epascarello 完成。我不知道我在想什么。我还添加了其他行为示例。
标签: javascript flowtype