description |
---|
ไม่รู้จะแปลไทยยังไงดี... |
นอกจาก interface
แล้ว เรายังสามารถสร้าง Type ใหม่ด้วยคีย์เวิร์ด type
ได้เช่นกัน โดยความแตกต่างคีอ interface
ใช้สร้าง Type สำหรับ Object หรือ Class แต่ type
จะสามารถกำหนดเป็นค่าแบบตรงตัว (Literal) ได้เลย
สรุปง่ายๆ ว่ามันคือการประกาศตัวแปรให้เป็น type
เพื่อที่จะนำไปใช้ต่อ
type Hello = string // ให้ type Hello เป็น string
const a: Hello = "World" // ใช้งาน type Hello
type Hi = "Hi" // ให้ type Hi เป็น "Hi" แบบตรงตัว
const b: Hi = "Hi"
const c: Hi = "Hello" // Error : เพราะค่าต้องเป็น "Hi" แบบตรงตัวเท่านั้น
ประโยชน์ของ Literal Type คือเราสามารถใช้ Union |
ได้ เพื่อกำหนดให้ Type เป็นค่าใดค่าหนึ่ง
type Hi = "Hi" | "Hello" // type Hi เป็นคำว่า "Hi" หรือ "Hello" ก็ได้
type Dice = // type Dice ต้องเป็นเลข 1-6
| 1 // เขียนแบบหลายบรรทัด
| 2
| 3
| 4
| 5
| 6
หรือจะใช้ Union กับตัว Type อื่นๆ ก็ยังได้
type NotNumber = string | boolean | array
// ต้องมี type string หรือ boolean หรือ array
การต้ังค่าคงที่ const
นั้นจะทำให้ Type เป็นแบบ Literal ส่วนการตั้งตัวแปรแบบ let
หรือ var
นั้นจะเป็น Type แบบปกติ ซึ่งเปลี่ยนค่าได้ เช่น
const x = "ABC" // x มี Type เป็น "ABC" ซึ่งเป็น Literal เพราะใช้ const
x = "DEF" // ❌ เปลี่ยนค่า x ไม่ได้ เพราะต้องเป็น "ABC" เสมอ
let y = "XYZ" // y มี Type เป็น string เพราะเปลี่ยนเป็นค่าอื่นได้เนื่องจากใช้ let
y = "ABC" // ✅ เปลี่ยนค่า y ได้ เพราะยังเป็น string อยู่