TypeScript - type(2)

ryan·2022년 5월 5일
0
post-custom-banner

union

function sayAndReturnNumberOrString(phrase: number | string) {
  console.log(`Hey, ${phrase}`);
  return phrase;
}
  • 타입에 ||(또는) 를 적용할 수 있음

intersection

interface IDBConfig {
  host: string;
  port: number;
  user: string;
  password: string;
  schema?: string;
}
interface ExtraConfig {
  encrypt: boolean;
  dbName: string;
}
function printDBConfig(config: IDBConfig & ExtraConfig) {
  console.log(config); 
}

//result
// config {
// host: string;
// port: number;
// user: string;
// password: string;
// schema?: string;
// encrypt: boolean;
// dbName: string;
// }
  • interface 타입을 서로 합침(합집합)

type

type ID = string | number;

type Input = string;

type Point = {
  x: number;
  y: number;
}
  • 타입을 정의
  • interface와 유사하나 확장성이 고려되지 않았다는 것에 interface와의 차이점이 있다.

literal

type Weather =
  | "Sunny"
  | "Cloudy"
  | "Rainy"
  | "Windy"
  | "Snowy"
  | "Typhoon"
  | "Hurricane";

const dateToWeather: Record<number, Weather> = {
  1: "Sunny",
  2: "Cloudy",
  3: "Rainy",
  4: "Windy",
  5: "Snowy",
  6: "Typhoon",
  7: "Hurricane",
};

function getWeather(date: number): Weather {
  return dateToWeather[date];
}
  • 값을 타입으로 쓰는 것
  • 아래의 return값이 dateToweather의 값만 가지게 됨.

enum

  • 고정된 값을 정의하기 위해 사용
  • 객체처럼 key를 가진게 아닌 '값이 할당된 상수(constance)'로서 활용됨.
enum Day {
  SUN = "sunday",
  MON = "monday",
  TUE = "tuesday",
  WED = "wednesday",
  THU = "thursday",
  FRI = "friday",
  SAT = "saturday",
}

function sayDays() {
  console.log(`Today is: ${Day.SUN}}`);
}

// 요소 접근 방식
let Sun: Day = Day.SUN;
let Sun: Day = Day[0];

// Index를 customizing할 수 있다.
enum Day{SUN=1,MON=2...SAT=7}
let Sat:String = Day[7];

enum Day{SUN=3,MON,TUE...SAT}
let TUE:String = Day[5];

Any

let str: any ='hi';
let num: any = 10;
  • 모든 타입 저장 가능
  • 컴파일 중에 타입 검사를 하지 않음

void

let unknown:void = undefined;
function sayHi():void{
console.log('hi');
}
  • 보통 함수에서 반환 값이 없을 때 any의 반대 타입
  • 변수에는 undefined와 null만 할당하고, 함수에는 반환 값을 설정할 수 없는 타입

Generic

interface C<T> { //인터페이스 선언시 제네릭으로 일단 선언
  x:T;
  y;T;
}

const c : C<number> ={ // 인터페이스를 적용할 때 타입을 선언
  x:1;
  y:2;
}
  • 객체의 구조는 정했지만 key의 type을 미리 정하지 않을 때 사용
  • 재사용성이 뛰어나다.
profile
프론트엔드 개발자
post-custom-banner

0개의 댓글