[TS] 객체 타입

TIL

객체 (Object)

객체 타입을 정의하는 방법

Object로 정의

let user: object = {
    id: 1,
      name: 'woodstock',
};

타입스크립트의 object 타입은 단순히 값이 객체임을 표현하는 것 외에는 아무런 정보도 제공하지 않는다.

따라서 다음과 같이 프로퍼티에 접근하려고 하면 오류가 발생한다.

이와 같은 문제를 해결하려면 객체 리터럴 타입을 이용해야 한다.

 

객체 리터럴 타입

중괄호를 열고 객체가 가지는 프로퍼티를 직접 나열해 만드는 타입이다.

💭 리터럴 타입이란?

let user: {
    id: number;
      name: string;
} = {
    id: 1,
      namd: 'woodstock',
};
타입스크립트는 C나 Java와 달리 구조적 타입 시스템(Structual Type Ststem)을 사용한다.
객체가 어떤 클래스로부터 생성되었는지가 아니라, 어떤 프로퍼티를 가지고 있는지 를 기준으로 타입을 판단한다.
type Cake = {
    name: string;
      brand: string;
      cost: number;
};

// 이 구조를 가진 모든 객체는 Cake 타입으로 인정된다.
const myCake = { name: "스초생", brand: "투썸플레이스", cost: 20000 };​

 

특수한 프로퍼티 정의

타입스크립트에서는 객체 타입을 정의할 때 특정 프로퍼티를 선택적이거나 읽기 전용으로 만들 수 있다.

선택적 프로퍼티 (Optional Property)

?을 붙인 프로터피는 선택적 프로퍼티가 된다.

let user: {
  id?: number; // id는 선택적 프로퍼티이다.
  name: string;
} = {
  id: 1,
  name: "woodstock",
};

// id가 없어도 에러가 발생하지 않는다.
user = {
  name: 'snoopy',
}

 

읽기전용 프로퍼티 (Readonly Property)

프로퍼티 앞에 readonly 키워드를 붙이면 읽기 전용이 된다.

let config: {
  readonly apiKey: string;
} = {
  apiKey: "MY_API_KEY",
};

config.apiKey = "hacked"; // 에러메세지 : 읽기 전용 속성이므로 'apiKey'에 할당할 수 없습니다.

'TIL' 카테고리의 다른 글

[TS] 열거형 타입  (0) 2025.10.28
[TS] 타입 별칭과 인덱스 시그니처  (0) 2025.10.28
[TS] 배열과 튜플  (0) 2025.10.28
[TS] 원시타입과 리터럴 타입  (0) 2025.10.28
타입스크립트 컴파일러 옵션 설정  (0) 2025.10.27
'TIL' 카테고리의 다른 글
  • [TS] 열거형 타입
  • [TS] 타입 별칭과 인덱스 시그니처
  • [TS] 배열과 튜플
  • [TS] 원시타입과 리터럴 타입
고견
고견
개발 자국 남기기
  • 고견
    개발자국
    고견
  • 전체
    오늘
    어제
    • 분류 전체보기 (157) N
      • Frontend (29)
        • Next.js (16)
        • JavaScript (7)
      • CS (19) N
        • 자료구조 (9)
        • 알고리즘 (5)
        • 운영체제 (4) N
        • 네트워크 (1) N
      • TIL (93)
      • Dev Log (16)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    자료구조
    클래스
    앱 라우터
    emotion diary
    Next.js
    algorithm
    generic
    페이지 라우터
    배열
    문자열
    알고리즘
    ai 감성 일기장
    인터페이스
    트러블 슈팅
    타입 좁히기
    memory
    C
    제네릭
    Trouble Shooting
    typescript
    useState
    Spa
    cs50
    react
    App Router
    javascript
    바닐라 자바스크립트
    CS
    함수 타입
    Pages Router
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
고견
[TS] 객체 타입
상단으로

티스토리툴바