TypeScript

[TS] Typescript #day2

옝옹 2024. 12. 18. 23:48

# Types of TS part One

선택적 타입 (Optional Type)

: 필수적으로 존재하지 않아도 되는 속성

 

사용법 : 이름 뒤에 물음표(?)를 추가한다.

type Player = {
  name : number,
  age?: string
}

 

 

타입 별칭 (Type Alias)

특정 타입에 이름을 부여하여 코드의 가독성을 높이고 재사용성을 향상시킴

type Age = number;
type Name = string;

type Player = {
  name : Name,
  age?: Age
}

const nico : Player = {
  name : "nico",
}
const lynn : Player = {
  name : "lynn",
}

type User = {
  id: number;
  name: string;
  email: string;
};

const getUser = (user: User): string => {
  return `User Name: ${user.name}, Email: ${user.email}`;
}

 

인자 타입/리턴값 타입

function playerMaker(name:string) : Player {
  return {
    name  
  }
} 
const PlayerMaker = (name:string) : Player => ({name})

const nic = playerMaker("nico")
nic.age = 12

 

#Types of TS part Two

readonly

: 값을 수정하려고 하면 ts가 멈춰줌. 이는 readonly(읽기 전용)이기 때문에 예상되지 않은 상태 변경에 보호장치를 얻게 되는 것

const numbers : readonly number[] = [1,2,3,4]

 

undefined/null

let a: undefined = undefined
let b : null = null

 

Tuple 

: 길이와 각 요소마다의 타입이 고정된 배열

const player: [string, number, boolean] = ["nico", 12, false]

 

any type

  • 모든 타입을 허용할 수 있는 타입
  • typescript 의 보호 장치를 모두 잃어버리게 하기 때문에 사용하지 않는게 좋음.
  • 가끔 써야할 때가 있지만 좋은 규칙은 아님.
const c : any = true

 

#Types of TS part Three

unknown

  • 변수의 타입을 미리 알지 못할 때 사용한다.
  • 예를 들어, 만약 api로부터 응답을 받는데 그 응담의 타입을 모른다면 unknown으로 막아줄 수 있음
  • 그러면 타입스크립트가 강제로 타입을 확인해줌
let d : unknown;

if(typeof d === 'number') {
  let e = d + 1;
}

if(typeof d === 'string') {
  let e = d.toUpperCase();
}

 

void

아무것도 return 하지 않는 함수의 타입

function hello() {	
   console.log('x')
}

function hello():void {	
   console.log('x')
}


never

  • 함수가 절대 return하지 않을 때 발생
  • 예를 들어, 함수에서 exception(예외)이 발생했을 때 사용
function bye(): never {
   throw new Error("xxx")
}
function good(name: string | number) {
  if(typeof name === "string") {
    name // string
  } else if( typeof name === "number") {
    name // number
  } else { 
    name  // 여기에 뭘 쓰던 타입은 never임.
  }
}