angular - '<Hero[]>' หมายความว่าอะไร
สวัสดี ผม/ดิฉันเป็นมือใหม่ใน angular และ typescript และกำลังพยายามเรียนรู้บทเรียนจาก Angular และผม/ดิฉันพบสิ่งที่ไม่เข้าใจว่ามันหมายถึงอะไร เช่น:
1.
getHeroes(): Observable<Hero[]> {
this.messageService.add('HeroService: fetched heroes');
console.log(this.http);
return this.http.get<Hero[]>(this.heroesUrl);
}
ในตัวอย่างข้างต้น ผมต้องการรู้ว่า <Hero[]> หมายถึงอะไรใน Observable<Hero[]> และ this.http.get<Hero[]>(this.heroesUrl)
2.
getHero(id: number): Observable<Hero> {
this.messageService.add(`HeroService: fetched hero id=${id}`);
return of(HEROES.find(hero => hero.id === id));
}
ตรวจสอบอย่างละเอียดที่ HeroService: fetched hero id=$ {id} มันถูกห่อด้วย backticks (`) ไม่ใช่ single quote (') ทำไมถึงใช้แบบนั้น? และอันสุดท้าย HEROES.find(hero => hero.id === id) => หมายถึงอะไร?
ฉันยังใหม่กับเรื่องนี้มากเลย ดังนั้นฉันต้องขอโทษจริง ๆ ถ้าคำถามของฉันทำให้พวกคุณรู้สึกไม่พอใจหรือกระทบจิตใจ
ขอบคุณ!
คำตอบ #1
เมธอด getHeroes() ส่งกลับ Observable ของประเภทอาร์เรย์ของ Hero และ Backtick (`) เรียกว่า template literal ก่อนหน้านี้เราเคยเขียน
let a = 10
b = 5 ;
console.log("value of a is" + a + " and the value of b is " + b);
ด้วยเทมเพลตลิเทอรัล เราสามารถเขียน
console.log(`value of a is ${a} and value of b is ${b}`)
สามารถใช้ $ {expression} เพื่อผูกกับนิพจน์
=> เรียกว่า fat arrow
let example = function(str){
console.log(str)
}
ตอนนี้สามารถเขียนโดยใช้ลูกศรหนาในลักษณะนี้ได้
let example = (str) =>{
console.log(str)
}
กรุณาอ่านเอกสารของ ES6 เพื่อความเข้าใจที่ดียิ่งขึ้น เครื่องหมายวลีแม่แบบและลูกศรหนาถูกใช้งานใน ES6
คำตอบ #2
Observable<Hero[]> หมายถึงว่าเมธอด getHeroes จะส่งกลับ Observable ซึ่งห่อหุ้มข้อมูลประเภท Hero Hero โดยที่ [] แสดงถึงอาเรย์;
` (backtick) เป็นที่รู้จักในชื่อ template literal ในจาวาสคริปต์
นิพจน์ภายในตัวอักษรลิเทอรัล (ค่าของมันจะถูกประเมินในเวลารันไทม์และรวมอยู่ในค่าที่ผลิตโดยลิเทอรัล) จะถูกครอบด้วยวงเล็บปีกกา {} โดยมีเครื่องหมายดอลลาร์ $นำหน้า
