【发布时间】:2019-08-09 08:31:02
【问题描述】:
我设置了两种流类型:
type Form1Fields = {
fieldA
}
type Form2Fields = {
fieldZ
}
type FormFields = Form1Fields | Form2Fields
然后我的函数接受FormFields 对象作为参数:
const myFunction = (fields: FormFields) => return fields.fieldA;
这给了我错误Cannot get fields.fieldA because property fieldA is missing on Form2Fields。
我明白它在说什么。根据Flow docs,“在调用接受联合类型的函数时,我们必须传入其中一种类型。但在函数内部,我们需要处理所有可能的类型。”
所以在myFunction,我需要做类似的事情:
if (typeof fields === Form1Fields) { ... }
else { ... }
我可以使用 number 之类的原始类型来做到这一点,但我似乎无法使用 Flow 类型来做到这一点。
有没有办法将对象与流类型进行比较,或者有没有解决这个问题的不同方法?
【问题讨论】:
-
我不确定 flowtype 如何在后台表示类型。你试过
if (fields instanceof Form1Fields) {吗?typeof只会给你object。
标签: javascript flowtype