bravo my life!

[TIL] 사용도는 떨어지지만 중요한 타입들. unknown, void, never 본문

Study/TypeScript

[TIL] 사용도는 떨어지지만 중요한 타입들. unknown, void, never

losajjang 2022. 6. 15. 18:00
728x90

1. unknown으로 변수의 타입을 미리 알 수 없을 때를 대비하자.

내가 받아올 타입을 당장 알 수 없을 때 unknown을 사용한다면 어느정도 대비가 가능하다.

let a: unknown;
let b = a + 1;

 

 

위와 같은 코드를 작성한다면 오른쪽 사진과 같은 오류를 알려주는데 unknown을 사용하는 방법이 잘 못 되었기 때문이다.

let a: unknown;
if (a === "number") {
  let b = a + 1;
}
if (a === "string") {
  let b = a.toUpperCase();
}

이처럼 unknown으로 타입을 지정해 두었다면 나중에 "알게 되었을 때"의 조건을 만들어 줘야 한다.

 

2. 아무것도 return하지 않을 때는 void. 

function hello() {
  console.log("x");
}

위의 코드는 void 타입을 따로 지정하지 않아도 TypeScript가 자동으로 void를 인식한다.

 

3. 함수를 절대 return시키지 않을 때는 never.

function hello(): never {
  return "x";
}

never타입을 지정한다면 오른쪽의 사진과 같이 편집기는 오류를 발생한다.

function hello(): never {
  throw new Error("xxx");
}

하지만 위와 같이 의도적으로 오류를 발생시킨다면 편집기는 오류를 발생시키지 않는다.

never를 활용한다면 다음과 같이 활용할 수 있을 것이다.

function hello(name: string | number) {
  if (typeof name === "string") {
    name;
  } else if (typeof name === "number") {
    name;
  } else {
    name;
  }
}

이 코드는 name의 타입이 string, number일 때만 작동이 되고 타입이 지정되지 않았으면 작동이 되지 않는 코드이다.

각 name은 다음과 같은 타입을 지닌 것을 확인 할 수 있다.