好的,我正在草拟这里的人们的集体福...
我想完成这样的事情:
所以我正在创建一些选择器,并且我希望类型defs是灵活的...现在我有了:
function getName(person) {
if (! person) {
return undefined
} else {
return person.name
}
}
const maybeFrank: ?Person = getFrank()
const definitelyMaria: Person = getMaria()
const frankName: ?string = getName(maybeFrank)
const mariaName: string = getName(definitelyMaria)
一种可能的解决方案是多次重新声明函数类型:
declare function getName(p: Person): string;
declare function getName(p: void): void;
function getName(p: ?Person): ?string { ... }
但是您必须告诉ESLint停止抱怨,并且您不能使用const
而不是function
,因为Flow怪异地抱怨。我宁愿不使用这种语法。
还有其他想法吗?我用&
或|
尝试了一些魔术,但是没有得到想要的效果...