创建了一个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)));
}