TypeScript의 인터페이스 대 클래스
TypeScript는 강력한 형식의 언어이며 복합 및 기본 형식을 지원합니다. 이것은 JavaScript 프로그래밍 언어의 상위 집합이며 결과적으로 객체 지향 프로그래밍(OOP) 개념 및 기능적 프로그래밍 개념과 같은 JavaScript에 존재하는 다양한 기능도 있습니다.
TypeScript는 코드베이스가 큰 조직에 매우 유용합니다. TypeScript는 잘못 유추된 유형에 대한 JavaScript의 경우 불가피한 런타임 오류를 방지하는 데 도움이 됩니다.
TypeScript를 지원하는 적절한 도구와 IDE는 사용자가 정의한 다양한 인터페이스 또는 TypeScript 컴파일러에서 유추한 유형을 통해 코드 완성 제안, 유형 오류 감지, 오류 자동 수정 등을 수행할 수 있습니다.
이 자습서는 클래스와 인터페이스 간의 차이점에 초점을 맞추고 일부 데이터를 모델링할 때 사용할 시기를 보여줍니다.
TypeScript의 클래스와 인터페이스의 차이점
클래스는 기본적으로 서로 다른 속성과 관련된 메서드가 있는 서로 다른 개체의 구현을 유지하는 데 필요합니다. 클래스는 초기화된 속성을 가질 수 있고 내부에 다양한 메서드의 구현을 가질 수 있으며 다른 개체를 초기화하거나 생성하는 데 사용할 수 있습니다.
인터페이스는 객체에 해당하는 다양한 속성의 유형 정보를 보유하기 위해서만 사용됩니다. 일반적으로 유형 검사에 사용되어 런타임 오류를 방지하며 개체 인스턴스화에는 사용할 수 없습니다.
class Animal {
name : string;
eyes : number;
constructor( name : string, eyes : number) {
this.name = name;
this.eyes = eyes;
}
getName() : string {
return this.name;
}
getEyes() : number {
return this.eyes;
}
}
위의 코드 블록은 Animal
클래스와 관련된 다양한 속성의 청사진을 포함하고 몇 가지 메서드가 있는 TypeScript 클래스의 구현을 보여줍니다. 인터페이스를 사용하여 동일한 데이터를 모델링할 수 있습니다.
interface Animal {
name : string;
eyes : number;
getName : () => string;
getEyes : () => number;
}
따라서 인터페이스에 따르면 인터페이스를 구현하는 모든 객체에 대한 유형 검사의 모든 가능성이 있지만 클래스와 달리 클래스의 속성을 초기화할 수 있는 방법이 없으며 클래스의 기능에 대한 구현을 가질 수 없습니다.
TypeScript에서 클래스와 인터페이스를 사용하는 경우
클래스는 기본값, 다른 메소드 구현을 포함하는 객체 청사진으로 사용되거나 new
키워드를 사용하여 동일한 클래스의 다른 인스턴스를 생성하는 동안 사용됩니다. 또한 클래스를 사용하면 TypeScript 컴파일러에서 제거한 인터페이스와 달리 코드가 런타임에 공간을 차지합니다.
클래스에는 인터페이스와 달리 클래스에서 일부 초기화 코드를 추가하고 데이터 변수를 초기화하기 위한 생성자가 있습니다.
따라서 클래스는 개체를 생성해야 하고 종종 확장해야 하고 초기화 논리를 첨부해야 하는 복잡한 데이터 모델을 나타내는 데 사용됩니다.
한편 인터페이스는 객체와 관련된 속성의 유형만으로 구성된 간단한 데이터 모델링을 위해 사용됩니다.
그들은 또한 일부 클래스의 데이터 인터페이스 역할을 할 수 있습니다. 예를 들어 Tiger
클래스는 Animal
을 구현합니다. Tiger
클래스는 Animal
인터페이스에 있는 것과 동일한 속성으로 모든 유형 검사를 지원합니다.