- 0
- 2
타입스크립트의 타입과 인터페이스의 차이점
답변 확인
타입(Type)과 인터페이스(Interface)의 차이점
1. 확장성
- Interface: 선언 병합을 지원하여 동일한 이름으로 여러 번 선언하면 자동으로 속성 병합
interface Person {
age: number;
name: string;
}
interface Person {
address: string;
}
const person: Person = {
age: 30,
name: "John",
address: "1010",
};
- Type : 동일한 이름으로 중복 선언할 경우 에러가 발생
2. 복잡한 타입 정의
- Type: 튜플, 유니온(|), 인터섹션(&) 연산자를 활용해 복잡한 타입을 표현하는 데 유리
type BasicInfo = {
name: string;
age: number;
};
type ContactInfo = {
email: string;
phone: string;
};
type PersonInfo = BasicInfo & ContactInfo;
const person: PersonInfo = {
name: "John",
age: 30,
email: "john@example.com",
phone: "123-456-7890",
};
차이점
- Interface : 선언 병합 가능, 객체 타입 확장에 용이
- Type : 튜플 및 복잡한 타입 조합에 유리, 유니온(|)과 인터섹션(&) 연산 지원
언제 무엇을 사용할까?
- Type(타입)
- 객체 외의 타입(유니온, 튜플, 함수 등)을 정의할 때
- 객체 타입을 조합하거나 복잡한 타입을 정의할 때
- 더 간결한 문법을 선호할 때
- Interface(인터페이스)
- 객체 타입 중심으로 정의할 때
- 클래스와 연계해 사용하는 경우
- 확장이 필요한 경우 (특히 선언 병합이 필요한 경우)
결론
- 간단한 객체 타입 정의에서는 타입과 인터페이스 모두 사용 가능
- 갹체 타입을 확장하거나 클래스와 연계해야 한다면 인터페이스를 사용하는것이 더 적합
- 현대 프로젝트에서는 타입(alias) 가 더 유연하고 범용적으로 사용되는 경향
Top comments (2)
- DavidYang2월 19일
우와 댓글이다~
- Olivia2월 19일
오오 ~~ :) 너무 글 좋네용