본문 바로가기

Typescript

[Typescript] 공식문서 공부중3

 

Narrowing

타입은 여러 종류를 함께 선언할 수 있다.

이것을 if문 등으로 타입별로 분기처리를 한다면 타입가드(type guard)라는 특수한 형식의 코드로 인식된다.

 

배열은 객체(object) 타입이다. 그러나 null 또한 객체(object) 타입이므로 오류가 발생할 수 있음에 주의해야 한다.

이 경우 값이 존재하는지를 &&를 추가하여 확인하면 의도대로 사용할 수 있다.

animals 내에 어떤 항목이 있는지 확인하기 위해 in을 사용할 수 있다.

 

instanceof로 타입 좁히기도 가능하다. 내부에 있는 인스턴스 종류에 따라 나뉜다.

조건에 따라 서로 다른 값을 참조해야 할 때 ?로 optional하게 값을 만들고, !로 값이 존재한다는 조건을 달게 되면 올바르게 사용된 것이라고 볼 수 없다. !는 값이 항상 존재한다는 것을 말하며, 잘못된 값을 참조하게 될 수 있기 때문이다.

이 경우에는 oprional하게 값을 만들지 말고 interface를 분리하여 여러가지로 만든 뒤 필수적인 값만 들어갈 수 있게 if로 분기처리를 하는 것이 더 낫다.