Как набрать Hint es6 метод как найти с помощью Flow
Я пытаюсь напечатать такой метод find
но я застреваю
Пример:
// My Array of object / class
export const heroes: Array<Hero> = [
{
info: 'superman',
strenght: 100,
},
{
info: 'batman',
strenght: 20,
},
];
export class HeroService {
static getHeroFromStrenght(strenght: number): Hero {
// Try to typeHint this, flow says it's missing in 'undefined'
return heroes.find((hero: Hero) => {
return hero.strenght == strenght;
});
}
}
В моем фиктивном примере я хотел бы использовать этот статический метод позже, но поток думает, что find возвращает неопределенное значение /bool вместо типа, который я действительно хочу иметь...
Любая идея, как я могу справиться с этим? Я пытался использовать такой интерфейс, но он все еще не работает:
interface Array<Hero> {
find(predicate: (search: Hero) => boolean) : Hero;
}
1 ответ
Ваша ошибка подписи Flow:
20: return heroes.find((hero: Hero) => {
^ Cannot return `heroes.find(...)` because undefined [1] is incompatible with `Hero` [2].
References:
[LIB] ..//static/v0.76.0/flowlib/core.js:245: find(callbackfn: (value: T, index: number, array: Array<T>) => any, thisArg?: any): T | void;
^ [1]
18: static getHeroFromStrenght(strenght: number): Hero {
^ [2]
В то время как простое изменение от Hero
в Hero | void
проходит проверку потока:
static getHeroFromStrenght(strenght: number): Hero | void {
Что правильно, если, например, heroes
массив будет пустым и find()
вернется undefined
(void
).
Проверьте Try Flow.