TypeScript에서 Type과 Interface의 차이
원문: https://blog.bitsrc.io/type-vs-interface-in-typescript-cf3c00bc04ae
Type vs Interface in TypeScript
Compare TypeScript Interfaces and Types. When should you use a type? When to use an interface What is the difference between type and interface in TS?
blog.bitsrc.io
TypeScript는 정적 타입 검사 개념이 JavaScript에 도입됨에 따라 현대 소프트웨어 개발 산업에서 빠르게 성장하고 있습니다.
따라서 TypeScript의 Type과 Interface에 대해 들어본 적이 있을 가능성이 높습니다.
그러나 초보 개발자들은 좋은 관행을 잘 알지 못하므로 Type과 Interface를 사용할 때 실수를 범할 수 있습니다.
이 글에서는 TypeScript에서 Interface와 Type의 차이점에 대해 예제와 적절한 사용 사례와 함께 논의하여 양쪽 다 잘 활용할 수 있게 도와드리겠습니다.
💡 참고로 동일한 타입이나 인터페이스를 반복하게 되면 사용 가능한 컴포넌트로 타입/인터페이스를 생성하는 것을 고려해 보세요. Bit는 타입, 인터페이스 등 거의 모든 것을 애플리케이션 간에 공유할 수 있는 최고의 툴체인을 제공합니다.
더 알아보기: 프론트엔드와 백엔드 애플리케이션간에 타입 공유하기 백엔드 API가 새로운 타입의 데이터를 반환하도록 업데이트되었습니다. 프론트엔드 팀에게 알려서 업데이트를… bit.dev
인터페이스 인터페이스는 각 엔티티가 따라야 하는 구문을 지정합니다.
인터페이스는 인터페이스의 멤버(속성, 메소드, 이벤트)를 정의합니다.
인터페이스에는 멤버 선언만 포함됩니다. 파생 클래스가 멤버를 정의하는 것입니다.
TypeScript 컴파일러는 타입 검사를 위해 인터페이스를 사용하며, 파생된 클래스가 준수해야 하는 표준 구조를 확립하는 데 도움이 됩니다. 인터페이스를 생성할 때 interface 키워드를 사용합니다.
interface Person {
name: string;
age: number;
}
const john: Person = {
name: "John",
age: 26,
}
타입과 타입 별칭 TypeScript에서 데이터의 타입은 그것의 타입에 의해 정의됩니다.
"타입 별칭"이라는 것은 기존 타입에 다른 이름을 부여하는 것입니다. 이렇게 하면 코드를 더 명확하게 만들 수 있습니다.
타입을 만들 때 type 키워드를 사용합니다.
type Person = {
name: string;
age: number;
};
const john: Person = {
name: "John",
age: 26
};
인터페이스와 타입의 차이점
그럼 이제 인터페이스와 타입의 차이점을 보다 자세히 알아보겠습니다.
- 인터페이스는 선언 병합(Declaration Merging)을 지원합니다.
인터페이스를 여러 번 선언하더라도 컴파일러는 하나의 인터페이스로 간주합니다. 결국 이 인터페이스는 병합된 속성을 가지게 됩니다.
interface Person {
name: string;
}
interface Person {
age: number;
}
const john: Person = {
name: "John",
age: 26,
};
- 타입은 인터페이스보다 더 확장된 유형의 문서를 사용할 수 있습니다.
타입은 인터페이스와 동일한 속성을 가질 수 있지만, 유니온(Union)과 같은 추가 구문을 사용할 수도 있습니다.
type Person = {
name: string;
} & { age: number; };
const john: Person = {
name: "John",
age: 26
};
- 인터페이스는 클래스에서 구현할 수 있습니다.
인터페이스는 클래스 구문을 사용하여 쉽게 구현할 수 있습니다. 이 경우 인터페이스를 준수해야 하는 것은 클래스입니다.
interface Person {
name: string;
age: number;
}
class John implements Person {
name: "John";
age: 26;
}
Type or Interface - 어떤 것을 사용해야 할까?
값의 형태를 정의하는 데 인터페이스와 타입을 모두 사용할 수 있습니다. 그러나 인터페이스는 클래스로 구현할 때 사용되며 선언의 병합을 지원하므로 인터페이스를 먼저 사용하는 것이 좋습니다.
타입은 기존 타입에 유니온, 인터섹션 및 기타 고급 타입을 조합할 수 있기 때문에 타입의 조작이 필요한 경우 사용할 수 있습니다.
즉, 가능한한 인터페이스를 사용하고 필요에 따라 타입을 사용하는 것이 좋습니다.