For the complete documentation index, see llms.txt. This page is also available as Markdown.

Type vs Interface

Type กับ Interface ต่างกันอย่างไร เมื่อไหร่ควรใช้ตัวไหน?

เมื่อได้รู้จักวิธีการสร้าง Type ด้วย type กับ interface แล้ว อาจมีความสงสัยว่า แล้วมันต่างกันอย่างไร

สำหรับการกำหนดรูปร่างหน้าตาของออปเจกต์นั้น สามารถใช้ได้ทั้ง type และ interface

interface Point {
  x: number
  y: number
}

type Point = {
  x: number
  y: number
}

สังเกตว่าการใช้ interface จะคล้ายกับการสร้าง Class และการใช้ type จะคล้ายการประกาศค่าของตัวแปรโดยใช้ = เพราะฉะนั้นหากเป็นกรณีที่ตั้งชื่อให้กับ Type มาตรฐานทั่วไป หรือทำ Literal Types จะไม่สามารถใช้ interface ได้

type Color = "Yellow" | "Red" // OK

interface Color "Yellow" | "Red" // ❌ ไม่ได้ เพราะไม่ใช่ออบเจกต์

นอกจากนี้ยังมีข้ออื่นๆ ที่ interface ไม่เหมือนกับ type อีก 2-3 เรื่อง ดูรายละเอียดที่นี่

ส่วนเรื่องอะไรควรใช้เมื่อไหร่ จากความเห็นส่วนตัว และประสบการณ์ที่เขียนมา ขอสรุปแบบจำง่ายๆ ตามนี้

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

Last updated