JavaScript&TypeScript

[TS] Interface (인터페이스)

백단비 2024. 5. 8. 20:19

🧐 interface (인터페이스) 란?

  •  함수나 객체, 클래스의 스펙에 대한 정의
  •  어떤 속성을 가지고 있어야 하는지에 대한 정의
interface Person{
 name:string;
 age:number;
}

 

🌀 선택적 프로퍼티

  • 객체 타입에서의 선택적 프로퍼티와 유사
  • 프로퍼티가 있어도 되고, 없어도 될 때 '?'를 붙임
interface Person{
  name:string;
  age?:number;
}

 

🌀 읽기 전용 프로퍼티

  • 객체가 처음 생성될 때만 수정 가능한 프로퍼티
  • 처음 생성 이후의 재할당 불가!
interface Person{
  name:string;
  readonly age: number
}

 

 

🌀 인데스 시그니처 프로퍼티

  • 정의되지 않은 동적 타입의 할당이 필요할 때 사용
interface Person{
  name:string;
  age:number;
  [key:string]:any
}

 

🌀 인터페이스 확장

  • 다른 인터페이스를 참고하여 확장할 수 있음
  • 재사용 가능하게 쪼개고 조합해서 유연하게 사용 가능
interface Person{
  name:string;
  age:number;
}

interface Developer extends Person{
  field:string;
}

 

🌀 type과 interface의 차이

👉 간단하게 타입은 타입을 부를 "이름"을 정의하는 것이고 인터페이스는 새로운 "인터페이스"를 정의하는 것

👉 타입은 선언적 확장이 불가능하지만 인터페이스는 선언적 확장이 가능하다는 것

👉 타입은 인터페이스의 기능을 거의 커버하지만 인터페이스는 항상 확장이 가능한데 타입은 그렇지 않음

👉 따라서 선택적 사용이 필요함, 중요한건 일관적인 게 좋다는 것

320x100

'JavaScript&TypeScript' 카테고리의 다른 글

[JS] Object (객체) 2  (0) 2024.05.26
[JS] Object (객체) 1  (0) 2024.05.17
TypeScript의 기본 타입  (0) 2023.09.20
TypeScript란?  (0) 2023.09.06
JS) type  (0) 2023.04.21