μΉ΄ν…Œκ³ λ¦¬ μ—†μŒ

νƒ€μž…μŠ€ν¬λ¦¬νŠΈμ—μ„œ μΈν„°νŽ˜μ΄μŠ€λž€? (κ°œλ…, μ‚¬μš©λ²•)

주영 🐱 2024. 4. 25. 19:07
728x90
λ°˜μ‘ν˜•

νƒ€μž…μŠ€ν¬λ¦½νŠΈ(Typescript)μ—μ„œ μΈν„°νŽ˜μ΄μŠ€(interface)λŠ” 객체의 νƒ€μž…μ„ μ •μ˜ν•˜λŠ” 방법 쀑 ν•˜λ‚˜μž…λ‹ˆλ‹€. μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ‚¬μš©ν•˜λ©΄ 객체가 νŠΉμ • ꡬ쑰λ₯Ό 가지고 μžˆμŒμ„ λͺ…μ‹œν•  수 있으며, 이λ₯Ό 톡해 μ½”λ“œμ˜ μ•ˆμ •μ„±μ„ 높이고 μ—λŸ¬λ₯Ό 쀄일 수 μžˆμŠ΅λ‹ˆλ‹€. μΈν„°νŽ˜μ΄μŠ€λŠ” 클래슀, ν•¨μˆ˜, λ°°μ—΄ λ“± λ‹€μ–‘ν•œ κ³³μ—μ„œ μ‚¬μš©ν•  수 있으며, μ½”λ“œμ˜ 가독성과 μž¬μ‚¬μš©μ„±μ„ λ†’μ΄λŠ” 데 도움이 λ©λ‹ˆλ‹€.

μΈν„°νŽ˜μ΄μŠ€ μ •μ˜ 방법

μΈν„°νŽ˜μ΄μŠ€λŠ” interface ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ μ •μ˜ν•©λ‹ˆλ‹€. 그리고 κ·Έ μ•ˆμ— ν•΄λ‹Ή 객체가 κ°€μ Έμ•Ό ν•  속성과 κ·Έ νƒ€μž…μ„ λͺ…μ‹œν•©λ‹ˆλ‹€.

typescript

interface Person {
  name: string;
  age: number;
}

μœ„ μ˜ˆμ‹œμ—μ„œ Person μΈν„°νŽ˜μ΄μŠ€λŠ” nameκ³Ό age 두 가지 속성을 가지고 있으며, 각각 stringκ³Ό number νƒ€μž…μœΌλ‘œ μ§€μ •λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

μΈν„°νŽ˜μ΄μŠ€ μ‚¬μš© 방법

μΈν„°νŽ˜μ΄μŠ€λŠ” 주둜 λ³€μˆ˜μ˜ νƒ€μž…μœΌλ‘œ μ‚¬μš©λ˜κ±°λ‚˜, ν•¨μˆ˜μ˜ νŒŒλΌλ―Έν„° νƒ€μž…, λ°˜ν™˜ νƒ€μž…μœΌλ‘œ μ‚¬μš©λ©λ‹ˆλ‹€.

typescript

function greet(person: Person) {
  console.log("Hello, " + person.name);
}

const me: Person = { name: "John", age: 30 };
greet(me);

μ—¬κΈ°μ„œ greet ν•¨μˆ˜λŠ” Person μΈν„°νŽ˜μ΄μŠ€ νƒ€μž…μ˜ νŒŒλΌλ―Έν„°λ₯Ό λ°›μŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ greet ν•¨μˆ˜μ— μ „λ‹¬λ˜λŠ” μΈμžλŠ” λ°˜λ“œμ‹œ Person μΈν„°νŽ˜μ΄μŠ€κ°€ μš”κ΅¬ν•˜λŠ” nameκ³Ό age 속성을 κ°€μ Έμ•Ό ν•©λ‹ˆλ‹€.

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

μΈν„°νŽ˜μ΄μŠ€λŠ” extends ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•΄ λ‹€λ₯Έ μΈν„°νŽ˜μ΄μŠ€λ₯Ό ν™•μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 κΈ°μ‘΄ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μˆ˜μ •ν•˜μ§€ μ•Šκ³  μƒˆλ‘œμš΄ 속성을 μΆ”κ°€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

typescript

interface Employee extends Person {
  employeeId: number;
}

const employee: Employee = {
  name: "Jane",
  age: 28,
  employeeId: 1234
};

μœ„ μ˜ˆμ‹œμ—μ„œ Employee μΈν„°νŽ˜μ΄μŠ€λŠ” Person μΈν„°νŽ˜μ΄μŠ€λ₯Ό ν™•μž₯ν•˜μ—¬ employeeId 속성을 μΆ”κ°€ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ Employee νƒ€μž…μ˜ κ°μ²΄λŠ” Person의 λͺ¨λ“  속성을 ν¬ν•¨ν•˜λ©° μΆ”κ°€λ‘œ employeeId도 κ°€μ Έμ•Ό ν•©λ‹ˆλ‹€.

νƒ€μž…μŠ€ν¬λ¦½νŠΈμ˜ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ‚¬μš©ν•¨μœΌλ‘œμ¨, 보닀 λͺ…ν™•ν•˜κ³  κ΅¬μ‘°ν™”λœ μ½”λ“œλ₯Ό μž‘μ„±ν•  수 있으며, 개발 κ³Όμ •μ—μ„œ λ°œμƒν•  수 μžˆλŠ” νƒ€μž… κ΄€λ ¨ μ—λŸ¬λ₯Ό 사전에 μ˜ˆλ°©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ°˜μ‘ν˜•