我有两种 Flow 类型设置:
type Form1Fields = {
fieldA
}
type Form2Fields = {
fieldZ
}
type FormFields = Form1Fields | Form2Fields
然后我编写一个接受FormFields
对象作为参数的函数:
const myFunction = (fields: FormFields) => return fields.fieldA;
这给我带来了错误:
因为Form2Fields上缺少property fieldA, 无法获取fields.fieldA
。我理解这个错误的含义。根据Flow文档所述,"当调用接受联合类型的函数时,我们必须传入其中一个类型。但在函数内部,我们必须处理所有可能的类型。"
所以在
myFunction
中,我需要做类似以下的操作:if (typeof fields === Form1Fields) { ... }
else { ... }
我可以用原始类型比如number
做到这一点,但是似乎我不能用Flow类型来做到这一点。
有没有一种比较对象和Flow类型的方法,或者有没有其他解决这个问题的方式?
if (fields instanceof Form1Fields) {
吗?typeof
只会给你object
。 - Halcyon