티스토리 뷰
👒 인터페이스를 구현하는 클래스
타입스크립트의 인터페이스는 클래스의 설계도 역할을 할 수 있다.
인터페이스를 이용해 클래스에 어떤 필드들이 존재하고, 어떤 메소드가 존재하는 지 정의할 수 있다.
interface CharacterInterface{
name: string;
moveSpeed: number;
move(): void;
}
// CharacterInterface가 정의한 타입의 객체를 클래스가 생성하도록 하기
// implements(구현하다)
class Character implements CharacterInterface{
// 인터페이스는 public 필드만 정의할 수 있음
// -> private, protected 설정 불가능
// private하거나 protected한 필드가 필요한 경우에는 추가로 정의
constructor(
public name: string,
public moveSpeed: number,
private extra: string
){ // 매개변수에 접근 제어자 설정으로 생략 가능}
move():void{
console.log(`${this.moveSpeed}만큼 이동`)
}
}
인터페이스를 클래스에서 implements 키워드로 구현하도록 한다면 이 클래스가 생성하는 객체는 모두 해당 인터페이스 타입을 모두 만족하도록 클래스를 구현해야 한다.
인터페이스는 public한 필드만 정의할 수 있기 때문에 매개변수에 private나 protected 설정은 불가능하다. 하지만 추가로 private하거나 protected한 필드가 필요한 경우에는 추가로 정의가 가능하다.
보통 클래스를 만들 때 인터페이스를 설계도로 만드는 경우는 드물지만 라이브러리를 구현하거나 정교하고 복잡한 프로그래밍을 하는 경우도 종종 있다.
728x90
'코딩 > 한 입 크기로 잘라먹는 타입스크립트' 카테고리의 다른 글
[TypeScript] map, forEach 메소드 타입 정하기 (0) | 2023.09.14 |
---|---|
[TypeScript] 제네릭 함수와 타입 변수 (1) | 2023.09.13 |
[TypeScript] 접근 제어자 (0) | 2023.09.09 |
[TypeScript] 타입스크립트의 클래스 (0) | 2023.09.07 |
[TypeScript] 인터페이스 선언 합침 (0) | 2023.09.05 |