본문 바로가기
typeScript

typeScript - 타입가드

by sinabeuro 2021. 8. 1.
728x90

타입가드란

타입스크립트 내에서 어떤 변수가 2개 이상의 타입을 갖게되는 경우가 있을 때.

특정 타입이 들어왔을 때 작동할 수 없는 코드에 대해서 경고해주거나, 원천적으로 막을 수 있는 코드 테크닉을 말합니다.

 

function foo(a) {
  if(a === null)  return; 
  console.log(a?.valueOf());
}

foo();	// undefined

자바스크립트로 런타임 에러를 막을 수는 있습니다. 

하지만 위와 같은 방식은 그렇게 좋은 방식이 아닙니다.

런타입 에러로 자동으로 멈추는 것도 필요한 것이죠.

그렇기에 타입검사용 함수를 만들어 오작동을 막고 런타임을 멈출지 아닐지 판단하는 것이 좋습니다.

 

참고로 자바스크립트에는 null을 undefined 처리하는 와일드카드가 있습니다.

a?.valueOf()와 같이 변수 뒤에 '?'를 붙이면 값이 null일 때 undefined 처리합니다.

하지만 본래 값이 undefined로 수정되지는 않는다는 것을 알아두시길 바랍니다.

 

 

타입검사용 함수 구현

interface Foo {
  foo: string;
  common: string;
}

function isFoo(arg: any): arg is Foo {
  return arg.foo !== undefined;
}

console.log(isFoo({ foo: 'ok', common: 'wow'}));

위와 같은 방식으로 타입검사용 함수를 구현하면 런타임 에러를 막을 수 있으며, 불필요한 오작동을 막을 수 있습니다.

반환 타입에 is Foo 구문은 반환 타입이 Foo 인터페이스가 맞는지 체크하는 것입니다.

 

728x90

'typeScript' 카테고리의 다른 글

typeScript - type alias vs interface  (0) 2021.08.19
typeScript - @types  (0) 2021.08.01
typeScript - 제네릭(Generic) 기법  (0) 2021.07.29
typeScript - 튜플  (0) 2021.07.26
typeScript - typeScript 개괄3(기타)  (0) 2021.07.07

댓글