Literal Types
ไม่รู้จะแปลไทยยังไงดี...
นอกจาก 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 หรือ arrayLiteral Narrowing
การต้ังค่าคงที่ const นั้นจะทำให้ Type เป็นแบบ Literal ส่วนการตั้งตัวแปรแบบ let หรือ var นั้นจะเป็น Type แบบปกติ ซึ่งเปลี่ยนค่าได้ เช่น
Last updated
Was this helpful?