특정 클래스를 상속받고자 할 때 사용한다.
extends로 특정 클래스를 상속받게 되면 해당 클래스의 프로퍼티, 메서드를 별도로 구현하지 않아도 인스턴스에서 사용이 가능하다.
누군가에게 상속받은 재산을 마음대로 사용할 수 있는 개념이다.
class Parent {
constructor(
protected name : string,
protected age : number
) {}
};
const Puser = new Parent("parent", 20);
class Child extends Parent {};
const Cuser = new Child("parent", 10);
미리 추상화된 인터페이스를 채택하여 사용하는 것이다.
extends와 다르게 채택한 인터페이스에 명시된 프로퍼티나 메서드를 반드시 구현해주어야 한다.
interface Info {
name : string,
age : number
}
class User implements Info {
constructor(
public name : string,
public age : number
) {}
}
위 내용에 추가하여 implements는 컴파일 후에 자바스크립트 코드로 남지 않기 때문에 최적화 측면에서 extends보다 유리한 측면이 있다고 생각한다.
참고