Type vs Interface

ν•™μŠ΅ ν‚€μ›Œλ“œ

  • νƒ€μž…λ³„μΉ­(Type)

  • μΈν„°νŽ˜μ΄μŠ€(interface)

  • νƒ€μž…λ³„μΉ­(Type) vs μΈν„°νŽ˜μ΄μŠ€(interface)

νƒ€μž…λ³„μΉ­

  • λ³€μˆ˜λ₯Ό μ„ μ–Έν•˜λ“― νƒ€μž…μ„ λ³„λ„λ‘œ μ •μ˜ν•  수 μžˆλ‹€.

  • type νƒ€μž…μ΄λ¦„ = νƒ€μž… νƒ€μž…μ˜ 이름은 λŒ€λ¬Έμžλ‘œ μ§€μ •

type TGender = 'female' | 'male';
type TUser = {
  name: string;
  age: number;
  gender: TGender; // πŸ‘ˆπŸ» type별칭 μ•ˆμ— λ˜λ‹€λ₯Έ typeλ³„μΉ­μœΌλ‘œ 적용이 κ°€λŠ₯ν•˜λ‹€.
};

const user1: TUser = {
  name: '홍길동',
  age: 20,
};

🚨 λ™μΌν•œ μŠ€μ½”ν”„ λ‚΄μ—μ„œλŠ” λ™μΌν•œ μ΄λ¦„μ˜ νƒ€μž…λ³„μΉ­μ„ μ„ μ–Έν•˜λŠ”κ²ƒμ€ λΆˆκ°€λŠ₯ν•˜λ‹€!

🚨 νƒ€μž…μ„ λ¦¬ν„°λŸ΄λ‘œ μ§€μ •ν•΄λ‘”λ‹€λ©΄?

νƒ€μž…λ³„μΉ­μ˜ ν™•μž₯

  • & μ—°μ‚°μžλ₯Ό μ΄μš©ν•œ ν™•μž₯

βœ… μ½κΈ°μ „μš© readonly : ν•΄λ‹Ή ν‚€μ›Œλ“œκ°€ 뢙이면 값을 μ½λŠ”κ±΄, 객체의 value κ°’ λ³€κ²½ν•˜λŠ”κ±΄ ν•  수 μ—†λ‹€.

μΈν„°νŽ˜μ΄μŠ€

  • νƒ€μž… 별칭과 λ™μΌν•˜κ²Œ νƒ€μž…μ— 이름을 μ§€μ–΄μ£ΌλŠ” 또 λ‹€λ₯Έ 문법

  • μ›μ‹œνƒ€μž…μ€ μ§€μ •ν•  수 μ—†κ³ , 객체 νƒ€μž…λ§Œ μ§€μ • κ°€λŠ₯

  • interface νƒ€μž…μ΄λ¦„ {} νƒ€μž…μ˜ 이름은 λŒ€λ¬Έμžλ‘œ μ§€μ •

⭐️ λ™μΌν•œ μŠ€μ½”ν”„ λ‚΄μ—μ„œλŠ” λ™μΌν•œ μ΄λ¦„μ˜ μΈν„°νŽ˜μ΄μŠ€ 선언이 κ°€λŠ₯ν•˜λ‹€!

μΈν„°νŽ˜μ΄μŠ€μ˜ ν™•μž₯

  • & μ—°μ‚°μžλ₯Ό ν™œμš©ν•œ ν™•μž₯

  • extendsλ₯Ό μ‚¬μš©ν•œ ν™•μž₯

닀쀑확μž₯

  • ,λ₯Ό μ‚¬μš©ν•œ ν™•μž₯

νƒ€μž…λ³„μΉ­(Type) vs μΈν„°νŽ˜μ΄μŠ€(interface)

  • μ„ μ–Έλ°©μ‹μ˜ 차이

  • ν™•μž₯λ°©μ‹μ˜ 차이

πŸ€₯ 개발자의 μ·¨ν–₯에 따라 μ‚¬μš©ν•˜λŠ” 방식이 λ‹€λ₯ΌλΏ λ‘κ°€μ§€μ˜ 큰 μ°¨μ΄λŠ” μ—†λ‹€.

πŸ”— μ°Έκ³ 

Last updated