[typescript] 12. interface (인터페이스)와 추상 Class 차이
1. interface(인터페이스)
1) 개념
interface는 A와 B 간의 통신규약(약속)입니다. 그래서 interface에는 선언만 존재합니다.
좀 더 풀어서 설명을 하면, 프로그래머 A와 B가 총을 개발한다면 아래 와 같이 기능 개발을 따로 할 수 있습니다.
- A : 총의 기능을 만듭니다.
- B : 총을 실제로 사용하는 부분을 만든다.
그런데 개발 시간이 촉박하여 A와 B는 동시에 개발을 해야 한다고 할 때, A, B는 서로 공통적으로 사용할 부분을
미리 선언을 합니다. 여기서 미리 선언하는 정보를 모아 둔 것을 interface라고 합니다. A, B는 interface를 사용하여
서로 개발을 진행 후 B는 interface를 사용하여 Dummy로 개발 한 부분을 A의 코드로 변경하여 개발을 완료합니다.
이렇듯 interface는 협업 개발에 있어서 서로 간의 통신규약(약속)을 의미합니다.
2) 특징
- javascript(ES6)가 지원하지 않는 typescript만의 특징입니다.
- interface는 type이며 compile후에 사라집니다.
- interface는 선언만 존재합니다.
- 속성과 method는 선언할 수 있지만 접근 제한자는 설정할 수 없습니다.
- intreface 간에 extends를 사용하여 다중 상속이 가능합니다.
Ex) interface extends Bird, Dog, horse { }
2) 사용 이유
협업하여 개발 시 공통적으로 사용되는 부분에 대한여 미리 정의하여 개발할 경우 추후 코드를 합칠 때 효율 적이기
때문에 사용합니다.
3) 형태
- interface에 사용할 속성 및 method를 선언합니다.
- class에서 implements를 사용하여 interface를 구현합니다.
interface MyGun {
bullet: number; // 속성
shotGun(): void; // method
getBulletInfo(): number; // method
}
class RazerGun implements MyGun {
bullet: number;
constructor() {
this.bullet = 4;
}
shotGun() {
console.log("비잉~~");
this.bullet--;
}
getBulletInfo(): number {
return this.bullet;
}
}
4) 사용법
// 동기 개발을 위하여 사용할 interface
interface MyGun {
bullet: number; // 속성
shotGun(): void; // method
getBulletInfo(): number; // method
}
// A 개발자가 동시 개발 당시 사용 할 interface를 구현한 실제사용할 class
class RazerGun implements MyGun {
bullet: number;
constructor() {
this.bullet = 4;
}
shotGun() {
console.log("비잉~~");
this.bullet--;
}
getBulletInfo(): number {
return this.bullet;
}
}
// B 개발자가 동시 개발 당시 사용 할 interface를 구현한 Dummy Class
class DumyGun implements MyGun {
bullet: number;
constructor() {
this.bullet = 2;
}
shotGun() {
console.log("가 짜~~~");
}
getBulletInfo(): number {
return 1;
}
}
// B 개발자의 개별 개발 당시 Dummy 코드
let gunUser = new DumyGun();
gunUser.shotGun();
// B 개발자가 A 개발자의 개발 완료후 Dummy Code를 실제 코드 변경한 코드
let realGunUser = new RazerGun();
realGunUser.shotGun();
2. 추상 Class와 interface의 용도 차이
1) 먼저 읽어야 할 것 추상 Class 설명 (마지막 챕터)
- https://doitnow-man.tistory.com/198
2) 추상 Class와 interface 용도 차이 설명
추상 Class와 Interface는 사용하는 용도가 다릅니다.
- 추상 Class는 프로그램의 전체 구조를 짤 때 필요합니다.
- interface는 프로그래머 간의 협업 개발을 할 때 필요합니다.
'ProgrammingLang > typescript' 카테고리의 다른 글
[typescript] 11. 오버라이딩과 오버로딩 그리고 추상 class (0) | 2019.05.05 |
---|---|
[typescript] 10. class 접근 제한자, super VS this, setter/ getter (0) | 2019.05.04 |
[typescript] 9. class 상속과 포함 관계 (0) | 2019.05.01 |
[typescript] 8. class 와 instance (0) | 2019.05.01 |
[webpack] 에러 발 생시 해결 방법 (0) | 2019.04.21 |