Ладно, я составляю коллективный поток людей здесь ...
Я хочу сделать что-то вроде этого:
Итак, я создаю несколько селекторов иЯ хочу, чтобы тип определения был гибким ... прямо сейчас у меня есть:
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 странно жалуется.Я бы предпочел не использовать этот синтаксис.
Есть еще идеи?Я попробовал немного магии с &
или |
, но не получил желаемого эффекта ...
Оригинальный вопрос SO