ในโลกของการพัฒนาซอฟต์แวร์ด้วย TypeScript การทำความเข้าใจกลไกของ Class เป็นสิ่งสำคัญอย่างยิ่งสำหรับนักพัฒนาระดับสูง เนื่องจากมันเป็นรากฐานในการสร้างโครงสร้างโค้ดที่สามารถขยายและบำรุงรักษาได้ แต่เมื่อเราพูดถึง ‘Static Members’ เรากำลังเจาะลึกเข้าไปยังแนวคิดเชิงวัตถุโปรแกรมมิ่ง (OOP Concept) ที่แตกต่างจากการทำงานกับ Instance ทั่วไป
TypeScript Static Properties และ Methods คืออะไร?
โดยพื้นฐานแล้ว สมาชิกแบบสแตติกคือคุณสมบัติหรือเมธอดที่ไม่ผูกติดอยู่กับอินสแทนซ์ใด ๆ ของคลาส เมื่อเทียบกับการเรียกใช้ฟังก์ชันผ่าน Object instance คุณจะต้องมีการสร้าง object ขึ้นมาก่อน แต่องค์ประกอบที่เป็น static สามารถถูกเข้าถึงได้ทันทีจากชื่อตัวคลาสนั่นเอง ทำให้พวกมันเหมาะสำหรับการเก็บค่าคงที่, ฟังก์ชันยูทิลิตี้ทางตรรกะ หรือการกำหนดพฤติกรรมร่วมกันให้กับกลุ่ม Classes โดยไม่จำเป็นต้องเกิดกระบวนการ instantiation เลยแม้แต่ครั้งเดียว
ประเภทและการใช้งานจริง: ความต่างระหว่าง ‘Instance’ กับ ‘Static’
หัวใจของการทำความเข้าใจเรื่องนี้อยู่ที่ข้อจำกัดของ Scope การประกาศสมาชิกภายใน Class จะแบ่งออกเป็นสองส่วนหลักๆ:
- Instance Member: เป็นข้อมูลหรือฟังก์ชันที่จะมีสำเนาเฉพาะสำหรับทุกอ็อบเจ็กต์ใหม่ที่มาจากคลาสดังกล่าว เช่น ถ้าเรามี `User` คลาส ข้อมูลอายุ (age) ถือว่าเป็น Instance Property เพราะผู้ใช้อาจหลายคน แต่ละคนก็จะมีอายุแตกต่างกัน
- Static Member: คือสิ่งที่เกี่ยวข้องกับ