我正在学习有角度的知识,并遵循官方有角度的docs。 其中一种方法使我失望,我想了解发生了什么。
deleteHero(hero: Hero | number): Observable<Hero> {
const id = typeof hero === 'number' ? hero : hero.id;
const url = ${this.heroesUrl}/${id};
参数列表中的管道号应该做什么? (我检查了一下,默认情况下,没有附带角度的数字管道。)
为什么是const id = type of hero === number ? hero : hero.id
。
为什么不只是const id = hero.id
?
不幸的是,文档没有在随后的部分中对此进行解释。
谢谢
答案 0 :(得分:2)
这不是管道运算符(只能在HTML模板内部使用),而是TypeScript注释函数参数类型的方式。
deleteHero(hero: Hero | number)
这意味着该函数接受一个类型为Hero
或number
的参数。在本教程的上下文中,可以通过提供英雄参考或英雄ID来删除英雄,这就是在功能正文开头进行检查的原因。
答案 1 :(得分:0)
这里number
不是管道,这意味着英雄参数可以是Hero
或number
类型,在您的示例中,|
意味着OR
,
关于第二个问题,它检查类型号,因为类型号不能具有id
属性,并且会给出错误,这就是为什么要检查它是否是数字分配号,否则要检查是否是{{ 1}}分配Hero