본문 바로가기
개발자일기/타입스크립트

타입스크립트 - Narrowing & Assertion

by 하린세상 2023. 4. 3.
반응형

이렇게하면 Operator '+' cannot be applied to types 'string | number' and 'number' 이런 에러가 납니다.

타입스크립트에서 '|' 로 연결된 union type은 연산을 못하게 지정해놨기 때문에 그렇습니다.

그런데 여기서 에러를 살펴보면 타입을 Narrowing 하거나 Assert해주면 됩니다.

 

Narrowing

type narrowing이란 if문 등으로 타입을 하나로 정해주는 것을 말합니다.

심지어 if, else if, else if 모두 잘 쓰고 마지막에 else를 안쓰면 에러가 납니다.

여기서 typeof 대신에 in, instanceof 같은 것들도 사용할 수 있습니다.

 

Assertion

위처럼 변수명 as 타입을 쓰면

"이 변수를 다음 타입이라고 할게"라는 뜻입니다.

그런데 이 말에서 알 수 있듯이 정말 타입이 하나밖에 들어올수밖에 없을때 사용해야만 합니다.

이처럼 assert 방식을 사용하면 narrowing보다 편한것은 사실입니다.

하지만 타입스크립트의 목적을 제대로 사용하려면 narrowing 방식을 사용해야 한다고 합니다.

반응형

댓글