[Typescrip] class와 interface

bshunter·2023년 7월 26일
0

Class

객체의 구조를 정의하는 데 사용됩니다.
객체의 속성, 메서드, 생성자 등을 정의할 수 있습니다.
class를 상속하여 새로운 class를 만들 수 있습니다.

Interface

객체의 구조를 정의하는 데 사용되지만, 구현을 강제하지 않습니다.
객체의 속성, 메서드, 생성자 등을 정의할 수 있습니다.
interface를 구현하는 class는 interface에서 정의한 속성, 메서드, 생성자를 모두 구현할 필요는 없습니다.
class 와 interface 를 함께 사용하면 코드의 재사용성을 높일 수 있습니다.

interface를 사용하여 객체의 구조를 정의하고, class를 사용하여 객체의 구현을 정의하면, interface를 구현하는 class는 interface에서 정의한 구조를 따르게 됩니다.
다음은 class와 interface의 예입니다.

interface Animal {
  name: string;
  age: number;
}

class Dog implements Animal {
  name: string;
  age: number;

  constructor(public name: string, public age: number) {}

  bark() {
    console.log("Woof!");
  }
}

class Cat implements Animal {
  name: string;
  age: number;

  constructor(public name: string, public age: number) {}

  meow() {
    console.log("Meow!");
  }
}

Animal 인터페이스는 동물의 이름과 나이를 정의합니다. Dog 클래스와 Cat 클래스는 모두 Animal 인터페이스를 구현하며, 동물의 이름과 나이를 저장합니다. Dog 클래스는 bark() 메서드를 가지고 있으며, Cat 클래스는 meow() 메서드를 가지고 있습니다.

이 예에서 Animal 인터페이스는 Dog 클래스와 Cat 클래스의 공통 속성인 이름과 나이를 정의합니다. Dog 클래스와 Cat 클래스는 Animal 인터페이스를 구현하여 Animal 인터페이스에서 정의한 속성을 사용합니다. 또한, Dog 클래스는 bark() 메서드를 가지고 있으며, Cat 클래스는 meow() 메서드를 가지고 있습니다.

class와 interface를 함께 사용하면 코드의 재사용성을 높일 수 있습니다.

예를 들어, Animal 인터페이스를 정의하고, Dog 클래스와 Cat 클래스가 Animal 인터페이스를 구현하도록 하면, Dog 클래스와 Cat 클래스는 Animal 인터페이스에서 정의한 속성인 이름과 나이를 공유할 수 있습니다. 또한, Dog 클래스와 Cat 클래스는 Animal 인터페이스에서 정의한 메서드인 bark() 메서드와 meow() 메서드를 공유할 수 있습니다.

class와 interface를 함께 사용하면 코드의 가독성을 높일 수 있습니다.

interface를 사용하여 객체의 구조를 정의하면, class의 구현에 집중할 수 있습니다. 또한, interface를 사용하여 객체의 구조를 정의하면, 객체의 타입을 검사할 수 있습니다.

class와 interface를 함께 사용하면 코드의 유지보수성을 높일 수 있습니다.

interface를 사용하여 객체의 구조를 정의하면, 객체의 구조를 변경할 때 class의 구현을 변경할 필요가 없습니다. 또한, interface를 사용하여 객체의 구조를 정의하면, 객체의 타입을 검사할 수 있으므로, 객체의 오류를 방지할 수 있습니다.

class와 interface를 함께 사용하면 코드의 품질을 높일 수 있습니다.

0개의 댓글