728x90
인터페이스와 클래스
- TS의 인터페이스는 클래스의 설계도 역할을 할 수 있다.
- 인터페이스를 이용해 클래스에 어떤 필드가 존재하고, 어떤 메서드가 존재하는지 정의할 수 있다.
interface CharacterInterface {
name: string;
moveSpeed: number;
move(): void;
}
// 인터페이스로 클래스를 구현하다
// 인터페이스는 무조건 pubulic
class Character implements CharacterInterface {
constructor(public name: string, public moveSpeed: number) {}
move(): void {
console.log(`${this.moveSpeed} 속도로 이동`);
}
}
- CharacterInterface라는 인터페이스를 만들고 name, moveSpeed, move 메서드를 설정했다.
- implements(구현하다)라는 키워드를 사용하면 Character 클래스가 생성하는 객체는 모두 해당 인터페이스 타입을 만족하도록 클래스를 구현하게 된다.
- 인터페이스로 정의하는 필드들은 무조건 public이라 private, protected를 달면 에러가 발생한다.
- 따라서 private, protected가 필요하면 인터페이스에 정의하지 말고 해당 클래스에 정의해줘야 한다.
- 매개변수에 접근 제어자를 설정했기 때문에 필드는 생략해도 되고, 생성자 함수 내에서도 this.필드 = 매개변수를 지워도 된다.
**출처: 한 입 크기로 잘라먹는 타입스크립트 (인프런, 이정환 강사님)
728x90
'❔ TypeScript > 💭 한 입 크기 TypeScript' 카테고리의 다른 글
[TypeScript] 제네릭 활용 (1) | 2023.12.21 |
---|---|
[TypeScript] 제네릭 (0) | 2023.12.21 |
[TypeScript] 접근 제어자 (0) | 2023.12.21 |
[TypeScript] 타입스크립트의 클래스 (0) | 2023.12.21 |
[TypeScript] 인터페이스 (0) | 2023.12.20 |