Type vs Interface
Type กับ Interface ต่างกันอย่างไร เมื่อไหร่ควรใช้ตัวไหน?
เมื่อได้รู้จักวิธีการสร้าง Type ด้วย type กับ interface แล้ว อาจมีความสงสัยว่า แล้วมันต่างกันอย่างไร
สำหรับการกำหนดรูปร่างหน้าตาของออปเจกต์นั้น สามารถใช้ได้ทั้ง type และ interface
1
interface Point {
2
x: number
3
y: number
4
}
5
6
type Point = {
7
x: number
8
y: number
9
}
Copied!
สังเกตว่าการใช้ interface จะคล้ายกับการสร้าง Class และการใช้ type จะคล้ายการประกาศค่าของตัวแปรโดยใช้ = เพราะฉะนั้นหากเป็นกรณีที่ตั้งชื่อให้กับ Type มาตรฐานทั่วไป หรือทำ Literal Types จะไม่สามารถใช้ interface ได้
1
type Color = "Yellow" | "Red" // OK
2
3
interface Color "Yellow" | "Red" // ❌ ไม่ได้ เพราะไม่ใช่ออบเจกต์
Copied!
นอกจากนี้ยังมีข้ออื่นๆ ที่ interface ไม่เหมือนกับ type อีก 2-3 เรื่อง ดูรายละเอียดที่นี่
ส่วนเรื่องอะไรควรใช้เมื่อไหร่ จากความเห็นส่วนตัว และประสบการณ์ที่เขียนมา ขอสรุปแบบจำง่ายๆ ตามนี้

ถ้าใช้ interface ได้ (เช่นกำหนดสำหรับ Object, Class) ก็ใช้ ถ้าทำไม่ได้ค่อยใช้ type แทน

Last modified 10mo ago
Copy link