ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • (TypeScript) - TypeScript 객체
    개발/TypeScript 2025. 8. 18. 15:18
    반응형

    ■ 객체

    // object
    let user:object = {
        id: 1,
        name: '송송송',
    };
    
    user.id;
    

     

    객체를 object 타입으로 받아 버리면 user 는 객체이긴 하나

    그 아래에 있는 점표기법을 사용해서 프로퍼티를 읽지 못하는 오류가 발생한다.

     

    // object
    let user: {
        id: number;
        name: string;
    } = {
        id: 1,
        name: '송송송',
    };
    
    user.id;
    

     

    따라서 object 가 아니라 객체 리터럴 타입을 이용해야 한다.

    중괄호를 이용해 객체의 타입을 정의하는 방식을 객체 리터럴 타입이라고 한다.

     

     

    이렇게 하면 점표기법으로 id 프로퍼티 접근이 가능해지며,

    다음과 같이 프로퍼티 타입도 확인이 가능하다.

     

     

    타입스크립트는 객체의 타입을 정의할 때 단순한 이름으로 type 을 정의하는게 아니라

    이 객체를 이루는 property 나 Method 가 어떻게 생겼는지, 즉 객체의 구조를 기준으로 타입을 정의한다.

    이를 구조적 타입 시스템이라고 한다.

    프로퍼티를 기준으로 타입을 결정하는 시스템이여서 property based system 이라고도 한다.

     

    ※ 이와 반대로 자바나 c는 이름을 기준으로 타입을 결정하는 명목적 타입 시스템이다.

     

    let user: {
        id?: number;
        name: string;
    } = {
        id: 1,
        name: '송송송',
    };

     

    만약 선택적 프로퍼티 즉, 있어도 되고 없어도 되는 요소라면,

    해당하는 프로퍼티에 ? 를 붙이면 된다.

    이를 선택적 프로퍼티, 영어로는 optional property 라고 한다.

     

    let config: {
        readonly apiKey: string;
    } = {
        apiKey: 'my api key',
    };
    
    config.apiKey = 'hacked';

     

    다음과 같이 절대 값이 수정되어서는 안되는 프로퍼티가 있을 경우에는

    프로퍼티 앞에 readonly 를 붙여서 읽기 전용 프로퍼티로 만들어주면 된다.

    반응형
Designed by Tistory.