ตัวแปรทั่วไปใน TypeScript
เพื่อความเข้าใจที่ดีขึ้นเกี่ยวกับแนวคิดของ generics ลองสร้างฟังก์ชันแรกของเราขึ้นมา - ฟังก์ชันเอกลักษณ์ ฟังก์ชันดังกล่าว จะคืนค่าสิ่งที่ได้รับมาโดยตรง - ด้วย ประเภทเดียวกัน
เริ่มต้น ลองเขียนรูปแบบของ ฟังก์ชันของเราแยกกันก่อน
เขียนฟังก์ชันที่รับพารามิเตอร์เป็น ตัวเลขและคืนค่าเป็นตัวเลข:
function func(data: number): number {
return data;
}
ตอนนี้เขียนฟังก์ชันที่รับพารามิเตอร์ เป็นสตริงและคืนค่าเป็นสตริง:
function func(data: string): string {
return data;
}
สมมติว่าตอนนี้เราต้องการทำให้ ทั้งหมดนี้ทำได้ด้วยฟังก์ชันเดียว นั่นคือเรา ต้องการทำ การกำหนดประเภททั่วไป
เพื่อการนี้เราจะใช้ ตัวแปรทั่วไป
ซึ่งเก็บรักษาประเภทข้อมูลไว้ ตัวแปรดังกล่าวถูกประกาศ
ในวงเล็บมุมก่อนวงเล็บกลม
ที่มีพารามิเตอร์ของฟังก์ชัน ลองประกาศ
ตัวแปรดังกล่าว โดยตั้งชื่อเป็น T
(สามารถตั้งชื่ออะไรก็ได้):
function func <T>(พารามิเตอร์ตรงนี้) {
return data;
}
หลังจากนั้นเราจะมีตัวแปร T,
ซึ่งสามารถนำมาใช้เพื่อ
เก็บประเภทของพารามิเตอร์ จากนั้น
ระบุมันเป็นประเภทของค่า
ที่คืนกลับมา
ระบุประเภทให้กับพารามิเตอร์ของเรา ในรูปแบบของตัวแปรของเรา:
function func <T>(data: T) {
return data;
}
ผลที่ได้คือ พารามิเตอร์สามารถถูกส่งเข้ามา
ในประเภทใดก็ได้ และประเภทนั้นจะถูกเก็บไว้ในตัวแปร
T ของเรา
ตอนนี้ใช้ค่าของตัวแปร T
เพื่อระบุผลลัพธ์ของฟังก์ชัน:
function func <T>(data: T): T {
return data;
}
ตอนนี้ผลที่ได้คือ ประเภทผลลัพธ์ของฟังก์ชัน จะได้มาจากประเภทของพารามิเตอร์ ลองทดสอบดู
เรียกฟังก์ชันด้วยตัวเลข:
console.log( func(3) ); // แสดงผล 3
เรียกฟังก์ชันด้วยสตริง:
console.log( func('x') ); // แสดงผล 'x'
สร้างฟังก์ชันที่รับพารามิเตอร์ เป็นตัวเลขสองตัว หรือสตริงสองสตริง ผลลัพธ์ของฟังก์ชันต้องคืนค่า เป็นผลรวมของพารามิเตอร์