🧐 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 |