STUDY/Typescript

[ Typescript ] 타입스크립트 심화

interface IProfile {
  name: string;
  age: number;
  school: string;
  hobby?: string;
}

 

 

 

Partial 타입 :: 모든 타입에 "?" 붙임

 

type aaa = Partial<IProfile>;

// 결과
interface IProfile {
  name?: string;
  age?: number;
  school?: string;
  hobby?: string;
}

 

 

 

Required 타입 :: 모든 타입이 필수가 됨

 

type bbb = Required<IProfile>;

// 결과
interface IProfile {
  name: string;
  age: number;
  school: string;
  hobby: string;
}

 

 

 

 

 

 

Pick 타입 :: 골라서 사용 가능하게 됨

 

type ccc = Pick<IProfile, "name" | "age">;

// 결과
interface IProfile {
  name: string;
  age: number;
}

 

 

 

 

Omit 타입 :: 제외하고 사용 가능하게 됨

 

type ddd = Omit<IProfile, "school">;

// 결과
interface IProfile {
  name: string;
  age: number;
  hobby?: string;
}

 

 

 

 

Union 타입 :: 값을 지정하고 해당 값만 사용 가능 함

 

type eee = "철수" | "영희" | "훈이";

// 결과
let child1: eee = "철수";  // 철수, 영희, 훈이만 가능 함

 

 

 

 

Record 타입 :: 왼쪽의 값들이 "key"로 변하고 오른쪽 값을 "type"으로 명시해서 사용 가능 함

 

type eee = "철수" | "영희" | "훈이";
type fff = Record<eee, number>;

// 결과
type fff = {
  "철수": number,
  "영희": number,
  "훈이": number,
};

 

 

 

 

 

 

type VS interface 차이점

 

interface IProfile {
  candy: number;
}

// 결과
interface IProfile {
  name: string;
  age: number;
  school: string;
  hobby?: string;
  candy: number;
}

 

interface => 새로운 타입을 선언하면 선언 병합이 가능 함

type => 선언 병합 불가능