Typescript - object, enum type

SB·2023년 6월 13일
0

Typescript!

목록 보기
3/4

typescript 개념 정리

// object
let user: {
    id?: number;
    name: string;
} = { // 객체 리터럴 타입
    id: 1,
    name: "abc",
};

user.id; 

let dog: { // 구조적 타입 시스템 -> property base system
            // 명목적 타입 시스템 -> 이름으로만 정의하는 것 

    name: string;
    color: string;
} = { 
    name: "돌돌이",
    color: "brown"
};

user.id;

dog.name;

// 타입 별칭

type User = {
    id: number;
    name: string;
    nickname: string;
    birth: string;
    bio: string;
    location: string;
}

function func() { // 함수안에서의 user 타입니다. 구분되서 사용한다.
    type User = {};
}


let user1 : User = {
    id: 1, 
    name: "제임스",
    nickname: "james",
    birth: "1997.01.07",
    bio: "hi",
    location: "부천시"
};

let user2 : User = {
    id: 2, 
    name: "티모시",
    nickname: "timothee",
    birth: "1997.01.07",
    bio: "hi",
    location: "부천시"
};




// 인덱스 시그니처 -> 규칙을 위반하지만 않으면 오류 나지 않는다.


type CountryCodes = {
  [key : string] : string;
  Korea: string; // 반드시 포험시켜야 할때
}
let contryCodes: CountryCodes = {
    Korea : 'ko',
    UnitedState: 'us',
}

type CountryNumberCodes = { //인덱스 시그니처와 호환되야 한다.
    [key: string] : number;
    Korea: number;
};

let CounrtyNumberAndStringCodes: CountryNumberCodes = {
    Korea: 410,
};


//  enum 타입
// 여러가지 값들에 각각 이름을 부여해 열거해두고 사용하는 타입
// comfile 해도 사라지지 않는다.

enum Role {
    ADMIN,// 숫자 할당을 제거해도 된다. // ADMIN = 10,
    USER,
    GUEST,
}

enum Language {
    korean = "ko",
    english = "en",
}



const user11 = {
    name: "abc",
    role: Role.ADMIN, // 0 <- 관리자
    language: Language.korean,
}

const user12 = {
    name: "def",
    role: Role.USER,
    language: Language.english, // 1 <- 일반유저
}

const user13 = {
    name: "ghi",
    role: Role.GUEST, // 2 <- 게스트
}

console.log(user11, user12, user13);
profile
developerr

0개의 댓글