object 타입의 한계
object 타입은 "이 값은 객체임"라는 정보만 제공할 뿐,
객체의 프로퍼티나 메서드에 대한 정보가 없다.
let user: object = {
id: 1,
name: "ttining",
};
user.id;
object 타입으로 선언하면 user.id처럼 특정 프로퍼티에 접근할 수 없다.
- 따라서, 객체의 구조를 명확하게 정의하는 것이 중요하다.
객체 리터럴을 사용한 타입 정의
{} 중괄호를 사용해 객체의 프로퍼티 타입을 명확하게 정의할 수 있다.
let user: { id: number; name: string } = {
id: 1,
name: 'ttining',
};
user.id;
객체 타입을 정의하는 다양한 방법
1️⃣ 타입 별칭 (Type Alias)
- 동일한 객체 구조를 여러 곳에서 사용할 경우,
타입 별칭을 활용하면 가독성과 유지보수성이 좋아진다.
type User = {
id: number;
name: string;
}
const user: User = { id: 1, name: "ttining" };
2️⃣ 인터페이스 (Interface)
- 인터페이스를 사용하면 객체 구조를 명확하게 정의할 수 있으며, 확장성이 좋아진다.
interface User {
id: number;
name: string;
}
const user: User = { id: 1, name: "ttining" };
interface는 상속이 가능하고, OOP 스타일의 코드에 적합하다.
type과 interface의 차이점은 필요에 따라 선택하면 된다.
type은 유니온 타입, 인터섹션 타입 등을 사용할 때 유용하다.
✅ 정리
object 타입은 객체임을 나타낼 뿐, 내부 구조를 알 수 없다.
- 객체의 속성을 명확하게 정의하려면 객체 리터럴 타입을 사용해야 한다.
- 코드 재사용성을 높이려면 타입 별칭(type alias) 또는 인터페이스(interface)를 활용하는 것이 좋다.