TypeScript: Type นั้นสำคัญไฉน?
สวัสดีครับวันนี้อยากจะมาแชร์การใช้ Type สำคัญอย่างไรกับการ dev ด้วยภาษา TypeScript (TS)
Type
คือ…สิ่งใช้ระบุกับตัวแปร และ การคืนค่าของฟังก์ชันว่ามีลักษณะเป็นอย่างไร โดยแบ่งออกเป็น 2 ประเภทใหญ่ๆ
- Primitive Types
- number, string, boolean, void, undefined, symbol, null
2. Object Types
- function, array, classes, objects
ระบุ Type ทำยังไง
- case: ตัวแปร
- ประกาศตัวแปรตามปกติ (const / let ก็ได้)
- ใส่ : หลังชื่อตัวแปร
หรือ
ประกาศตัวแปรพร้อมกำหนดค่าเริ่มต้น
จะเห็นว่า x และ y มี type เดียวกัน แต่มีสิ่งที่ต่างกันอยู่(เก็บไว้พูดในเรื่องของ Type Annotation และ Type Interference นะครับ)
- case ฟังก์ชัน
- ประกาศฟังก์ชัน
- ใส่ : ที่หลัง ( ) เพื่อระบุว่า ‘ฟังก์ชั่นนี้จะ return ค่าออกมาเป็น type number’
**สังเกตว่าในส่วนของ parameter ก็สามารถระบุ type ได้เช่นเดียวกับระบุ type ตัวแปร ซึ่งการะบุ type จะช่วยให้ตรวจสอบได้เมื่อ มีการ เรียกใช้งานฟังก์ชัน แต่ส่งค่า a และ b มาไม่ตรง type (เช่นส่ง string มา) TS complier ก็จะแสดง error ให้ทราบ
ทำไมเราต้องแคร์เรื่อง Type ละ
- ตัว TS compiler จะใช้ types ในการวิเคราะห์ code ว่ามี error ตรงไหนบ้าง (ทราบ error เลย โดยไม่ต้องรอถึงช่วง run time)
- เป็นการบอกผู้ร่วมพัฒนา หรือคนที่มาอ่านโค้ดเข้าใจ ว่าตัวแปร หรือฟังก์ชั่นนั้นมี type หรือจะคืนค่าเป็น type อะไร
Type ช่วยเราในตอน Dev อย่างไร
ขอยกเป็นตัวอย่างเพื่อให้เข้าใจมากขึ้นครับ
ตัวอย่าง 1: กรณีการสร้างตัวแปร day และ day2 ที่มี type เป็น Date ซึ่งเมื่อเราต้องการเข้าถึง method ที่อยู่ใน class Date ตัว TS จะ guild มาให้ว่ามี method อะไรที่สามารถเรียกใช้ได้ และจะเตือน error(บรรทัดที่ 6 ) เมื่อเรียก method ที่ไม่ได้มีอยู่ใน class
ตัวอย่าง 2: กรณีการสร้างตัวแปร person ที่มี type เป็น { name: string } (object)ซึ่งก็ทำนองเดียวกับตัวอย่าง 1 เลยคือ จะมี guild แนะนำว่ามี key อะไรให้เข้าถึง และจะดัก error เมื่อ เรียก key ที่ไม่ได้อยู่ใน object
ตัวอย่าง 3: กรณีการสร้างตัวแปร gtr ที่มี type เป็น class Car, TS complier ก็สามารถ guild ถึง field และ method รวมไปถึงการตรวจสอบโค้ด error ได้เช่นกัน
สรุป
จากทั้ง 3 ตัวอย่างข้างต้น จะเห็นว่าการประกาศ Type ให้ตัวแปร หรือฟังก์ชันช่วยเราในการ dev เนื่องจากตัว TS complier จะช่วยในการหา error ทำให้เรารู้ได้อย่างรวดเร็วว่ามีข้อผิดพลาดเกิดขึ้น โดยไม่ต้องรอถึงตอน runtime ดังนั้นทุกที่มีการประกาศตัวแปร หรือฟังก์ชันเราควรระบุ Type ไว้ด้วยเสมอ