我正在尝试让函数c接受两种类型。除了Foo中的可选id
属性之外,类型是相同的。即使我在使用之前检查id
的存在,也会出现流错误。我尝试在这里和文档中搜索,但我找不到任何东西。
type Foo = {
bar: string,
id?: string,
}
type Bar = {
bar: string,
};
const a = (args: Bar) => {
b(args);
}
const c = (args: Foo) => {
b(args);
}
const b = ({ bar, id }: Bar | Foo) => {
// As soon as you use id here Flow errors out, even though id is optional
// and I check for it’s existence.
if (id) {
console.log(id);
}
}
答案 0 :(得分:1)
Flow目前(v0.69)在对象解构方面存在一些弱点,你可以在没有解构的情况下实现你想要的目标:
const b = (obj: Bar | Foo) => {
if (obj.id) {
console.log(obj.id)
}
}