Narrowing 더 알아보기 - && , in, instanceof

크롱·2023년 7월 25일
0

TypeScript

목록 보기
11/25

🌼 &&

실제로 현업에선 nullundefined 타입을 체크하는 경우가 많습니다.

어떤 변수나 함수파라미터에 null, undefined가 들어올 경우
어떻게 대처할지 if문으로 코드짜는 경우가 매우 많을 겁니다.

🐈‍ if문 조건에 && 기호를 사용하자! 🐈‍

function 함수(a :string|undefined){
	if(a && typeof a==='string'){
       // a가 undefined면 if문 실행x
      // a가 string일때 if문 실행o
    }
}

🌷 in 키워드

in 연산자로 object 자료 narrowing

ex. 파라미터로 object가 2개 들어올 수 있다고 타입지정을 했다.
하나는 {a : 'kim}
다른 하나는 {b : 'park'}

if (이 파라미터가 a라는 속성을 안에 가지고 있냐)
이런 if문을 써도 narrowing이 가능하다.

if (키값 in object자료형) 이렇게 쓰면 됩니다.

type Fish = {swim :string}
type Bird = {fly :string}  
//서로 가진 속성명이 다릅니다.

function 함수(animal :Fish | Bird){
	if('swim' in animal){ <== Fish타입인지 검사하는 narrowing
     return animal.swim
    }
    return animal.fly
}



🌺 instanceof

class로부터 생산된 object라면 instanceof로 narrowing

어떤 클래스로부터 new 키워드로 생산된 object들은 instanceof 키워드를 붙여서 부모 클래스가 누군지 검사할 수 있다 ==> narrowing


🥀 literal type

리터럴 타입이 뭐더라?
=> 특정 글자나 숫자만 가질 수 있게 제한을 두는 타입 literal type

object 타입이 둘다 비슷하게 생겼을때, narrowing하는법
== literal type고정된 값 만들어두셈.

type Car = {
  wheel : '4개', //이렇게 literal type만듬.
  color : string
}
type Bike = {
  wheel : '2개',
  color : string
}

function 함수(x : Car | Bike){
  if (x.wheel === '4개'){
    console.log('the car is ' + x.color)
  } else {
    console.log('the bike is ' + x.color)
  }
}
profile
👩‍💻안녕하세요🌞

0개의 댓글