流:当参数为空时返回空

时间:2018-09-12 14:11:38

标签: flow

好的,我正在草拟这里的人们的集体福...

我想完成这样的事情:

所以我正在创建一些选择器,并且我希望类型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怪异地抱怨。我宁愿不使用这种语法。

还有其他想法吗?我用&|尝试了一些魔术,但是没有得到想要的效果...

Original SO question

0 个答案:

没有答案