PlusMagi's Blog By Pitt Phunsanit Backend TypeScript Constructor คืออะไร? คู่มือฉบับสมบูรณ์ในการสร้าง Class และ Object

TypeScript Constructor คืออะไร? คู่มือฉบับสมบูรณ์ในการสร้าง Class และ Object

ในโลกของการพัฒนาซอฟต์แวร์เชิงวัตถุ (Object-Oriented Programming – OOP) การจัดการโครงสร้างข้อมูลและการเริ่มต้นสถานะของอ็อบเจกต์ (Object) อย่างถูกต้องเป็นรากฐานสำคัญที่กำหนดความเสถียรและความสามารถในการบำรุงรักษาโค้ด ไม่ว่าจะเป็นการใช้ TypeScript หรือการจัดการข้อมูลในระบบฐานข้อมูลขนาดใหญ่ หัวใจหลักที่เราต้องทำความเข้าใจคือแนวคิดของการ ‘เริ่มต้น’ หรือ Initialization ซึ่งใน TypeScript เราเรียกมันว่า Constructor

TypeScript Constructor คืออะไร?

พูดให้เข้าใจง่ายที่สุด Constructor ใน TypeScript คือเมธอดพิเศษที่ถูกเรียกใช้งานโดยอัตโนมัติทุกครั้งที่คุณทำการสร้าง Instance หรือเรียกใช้ Class เพื่อสร้าง Object ใหม่ มันเปรียบเสมือนขั้นตอนแรกที่ทำให้ Class ของเรามีชีวิตขึ้นมาจริง ๆ และมีคุณสมบัติพื้นฐานที่พร้อมใช้งานตั้งแต่เริ่มต้น

บทบาทหลักของ Constructor ไม่ใช่แค่การรับค่าตัวแปร (Parameters) เข้ามาเท่านั้น แต่คือการรับประกันว่า Object ทุกชิ้นที่ถูกสร้างขึ้นมานั้น จะต้องมีคุณสมบัติ (Properties) ที่จำเป็นครบถ้วน และอยู่ในสภาวะที่ถูกต้องตามที่ระบบกำหนด

กลไกเบื้องหลัง: การทำงานเชิงสถาปัตยกรรม (Architectural Mechanics)

ในเชิงสถาปัตยกรรม (Architectural Perspective) การทำความเข้าใจ Constructor คือการเข้าใจถึงการควบคุมการเกิด (Lifecycle Management) ของ Object เมื่อเรากำหนด Constructor เรากำลังกำหนด ‘สัญญา’ (Contract) ว่า Object ที่ถูกสร้างขึ้นมาจะต้องมีรูปร่างหน้าตาและข้อมูลเริ่มต้นอย่างไร

แม้ว่า Constructor จะเป็นแนวคิดของภาษาโปรแกรมมิ่ง แต่หลักการนี้ก็สามารถเปรียบเทียบได้กับการสร้างฟังก์ชันหรือ Stored Procedure ในระบบฐานข้อมูลอย่าง PostgreSQL ซึ่งทำหน้าที่รับค่า Input และคืนค่า Output ที่มีโครงสร้างที่แน่นอน เพื่อให้มั่นใจว่าข้อมูลที่ถูกสร้างหรือเปลี่ยนแปลงนั้นถูกต้องตามกฎเกณฑ์ (Constraints) เสมอ

ตัวอย่างการจำลอง Constructor ด้วย PostgreSQL Function

หากเรามองว่าการสร้าง Object คือการเรียกใช้ฟังก์ชันเพื่อสร้าง Record ใหม่ในฐานข้อมูล PostgreSQL เราจะต้องใช้ฟังก์ชันที่รับค่า Input และทำการตรวจสอบความถูกต้องของข้อมูลก่อนที่จะคืนค่า (Return) หรือบันทึก (Insert) ข้อมูลนั้น ๆ

SQL

-- การจำลอง Constructor: ฟังก์ชันที่รับค่าและสร้าง Object (Record) ใหม่
CREATE OR REPLACE FUNCTION create_product_record(
    product_id INT, 
    product_name VARCHAR, 
    initial_stock INT
) RETURNS TABLE (id INT, name VARCHAR, stock INT)
AS $$ 
BEGIN
    -- ตรวจสอบเงื่อนไข (Validation) ก่อนสร้าง Object
    IF initial_stock < 0 THEN
        RAISE EXCEPTION 'Stock cannot be negative.';
    END IF;

    -- สร้างและคืนค่า Record ใหม่ (Object Instance)
    RETURN QUERY SELECT product_id, product_name, initial_stock;
END;
$$ LANGUAGE plpgsql;

-- การเรียกใช้ (Instantiation) Constructor
SELECT * FROM create_product_record(101, 'Apple', 50);

-- ตัวอย่างการล้มเหลว (Failure to Initialize)
SELECT * FROM create_product_record(102, 'Banana', -5); -- จะเกิด Error

จากตัวอย่างข้างต้น ฟังก์ชัน `create_product_record` ทำหน้าที่เป็น Constructor โดยมันรับค่า 3 ตัว (Input) และมีหน้าที่หลักในการตรวจสอบ (Validation) และสร้าง Record (Object) ที่มีโครงสร้างแน่นอน หากการตรวจสอบล้มเหลว (เช่น สต็อกติดลบ) ระบบจะยกเว้นข้อผิดพลาด (Raise Exception) ซึ่งเป็นหลักการเดียวกับที่ Constructor ใน TypeScript ทำงานเพื่อป้องกันการเกิด Object ที่อยู่ในสภาวะที่ไม่สมบูรณ์

บทสรุป

ไม่ว่าคุณจะทำงานกับ TypeScript หรือ PostgreSQL หลักการของ Constructor คือการรับประกันความสมบูรณ์ของสถานะเริ่มต้น (Initial State Guarantee) การทำความเข้าใจแนวคิดนี้จะช่วยให้คุณสามารถออกแบบ Class หรือ Stored Procedure ที่มีความทนทาน (Robust) สามารถคาดการณ์พฤติกรรมได้ และลดข้อผิดพลาดที่เกิดจากการเริ่มต้น Object ด้วยข้อมูลที่ไม่ถูกต้องได้อย่างมีประสิทธิภาพ

Exit mobile version