我试图输入像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返回一个undefined / bool值而不是我真正想要的类型...
知道如何管理这个吗? 我尝试使用像这样的界面,但它仍然不起作用:
interface Array<Hero> {
find(predicate: (search: Hero) => boolean) : Hero;
}
答案 0 :(得分:0)
您对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。