ตัวแปรทั่วไปใน TypeScript

เพื่อความเข้าใจที่ดีขึ้นเกี่ยวกับแนวคิดของ generics ลองสร้างฟังก์ชันแรกของเราขึ้นมา - ฟังก์ชันเอกลักษณ์ ฟังก์ชันดังกล่าว จะคืนค่าสิ่งที่ได้รับมาโดยตรง - ด้วย ประเภทเดียวกัน

เริ่มต้น ลองเขียนรูปแบบของ ฟังก์ชันของเราแยกกันก่อน

เขียนฟังก์ชันที่รับพารามิเตอร์เป็น ตัวเลขและคืนค่าเป็นตัวเลข:

typescriptfunction func(data: number): number {
  return data;
}

ตอนนี้เขียนฟังก์ชันที่รับพารามิเตอร์ เป็นสตริงและคืนค่าเป็นสตริง:

typescriptfunction func(data: string): string {
  return data;
}

สมมติว่าตอนนี้เราต้องการทำให้ ทั้งหมดนี้ทำได้ด้วยฟังก์ชันเดียว นั่นคือเรา ต้องการทำ การกำหนดประเภททั่วไป

เพื่อการนี้เราจะใช้ ตัวแปรทั่วไป ซึ่งเก็บรักษาประเภทข้อมูลไว้ ตัวแปรดังกล่าวถูกประกาศ ในวงเล็บมุมก่อนวงเล็บกลม ที่มีพารามิเตอร์ของฟังก์ชัน ลองประกาศ ตัวแปรดังกล่าว โดยตั้งชื่อเป็น T (สามารถตั้งชื่ออะไรก็ได้):

typescriptfunction func <T>(พารามิเตอร์ตรงนี้) {
  return data;
}

หลังจากนั้นเราจะมีตัวแปร T, ซึ่งสามารถนำมาใช้เพื่อ เก็บประเภทของพารามิเตอร์ จากนั้น ระบุมันเป็นประเภทของค่า ที่คืนกลับมา

ระบุประเภทให้กับพารามิเตอร์ของเรา ในรูปแบบของตัวแปรของเรา:

typescriptfunction func <T>(data: T) {
  return data;
}

ผลที่ได้คือ พารามิเตอร์สามารถถูกส่งเข้ามา ในประเภทใดก็ได้ และประเภทนั้นจะถูกเก็บไว้ในตัวแปร T ของเรา

ตอนนี้ใช้ค่าของตัวแปร T เพื่อระบุผลลัพธ์ของฟังก์ชัน:

typescriptfunction func <T>(data: T): T {
  return data;
}

ตอนนี้ผลที่ได้คือ ประเภทผลลัพธ์ของฟังก์ชัน จะได้มาจากประเภทของพารามิเตอร์ ลองทดสอบดู

เรียกฟังก์ชันด้วยตัวเลข:

typescriptconsole.log( func(3) );   // แสดงผล 3

เรียกฟังก์ชันด้วยสตริง:

typescriptconsole.log( func('x') ); // แสดงผล 'x'
Задание 1

สร้างฟังก์ชันที่รับพารามิเตอร์ เป็นตัวเลขสองตัว หรือสตริงสองสตริง ผลลัพธ์ของฟังก์ชันต้องคืนค่า เป็นผลรวมของพารามิเตอร์