Typescript严格模式过滤器Observable



创建了一个Angular11项目,CompilerOptions中的strict设置为true,因为我认为在编译时检测潜在的错误是一个好主意。

然后尝试遵循Angular官方网站的教程,它不打开strict模式。在本例中,当服务返回一些硬编码的模拟数据时,它使用Observable。现在由于hero,这不能编译可能是undefined。编译器抱怨type Hero | undefined cannot be assigned to type Hero。注意,HEROES是硬编码的模拟数据,但在生产中是从数据库中检索的。关闭strict模式可以消除编译器错误,但是如果我想打开strict模式并且数据不被模拟怎么办?如何处理这种情况?

getHero(id:number): Observable<Hero> {
return of(HEROES.find((hero => hero.id === id)));
}

您可以搜索varhero是有效Hero的结果:

getHero(id:number): Observable<Hero> {
return of(HEROES.find((hero => hero && hero.id === id)));
}

最新更新