[TypeScript] 객체

JINSEON YE·2024년 8월 4일

공부

목록 보기
9/9

객체 정의하기

let user: object = {
  id: 1,
  name: "이정환",
};

user.id;

위 코드의 user.id 처럼 점 표기법으로 객체의 특정 프로퍼티에 접근하려고 하면 오류가 발생
타입스크립트의 object 타입은 단순 값이 객체임을 표현하는 것 외에는 아무런 정보도 제공하지 않는 타입이기 때문
따라서 이 타입은 객체의 프로퍼티에 대한 정보를 전혀 가지고 있지 않는다.
이럴 때에는 object가 아닌 객체 리터럴 타입을 이용해야 한다.

객체 리터럴 타입

let user: {
  id: number;
  name: string;
} = {
  id: 1,
  name: "이정환",
};

user.id;

변수 user의 타입을
number 타입의 id 그리고 string 타입의 name 프로퍼티를 갖는 객체 타입으로 정의했다.

구조를 기준으로 정의해서
구조적 타입 시스템이라고 한다.
-> 프로퍼티를 기준으로, 프로퍼티들이 있어야 하는지 정의하는 방식으로 객체의 타입을 정의

선택적 프로퍼티(Optional Property)
: 특정 프로퍼티는 있어도 되고 없어도 되는 상황에서 사용
프로퍼티의 이름 뒤에 ? 를 붙여주면 된다.

// object
let user: {
    id?: number;
    name: string;
} = {
    id: 1,
    name: "이정환",
};

user = {
    name: "홍길동",
};

읽기전용 프로퍼티(Readonly Property)
: 특정 프로퍼티를 읽기 전용으로 만들고 싶다면 다음과 같이 프로퍼티의 이름 앞에 readonly 키워드를 붙이면 된다.

let config: {
    readonly apiKey: string;
} = {
    apiKey: "MY API KEY",
}

config.apiKey = "hacked"; // 에러. 수정 불가
profile
백엔드 개발자

0개의 댓글