반응형
이렇게하면 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 방식을 사용해야 한다고 합니다.
반응형
'개발자일기 > 타입스크립트' 카테고리의 다른 글
함수에 type alias 지정하는 법 (0) | 2023.05.11 |
---|---|
타입스크립트 - 타입이 길어진다면 readonly를 쓰세요 (0) | 2023.04.04 |
타입스크립트 - 함수에 타입 지정하는 방법 (0) | 2023.04.02 |
타입스크립트를 쓰는데 타입을 해제할 수 있다? (0) | 2023.04.02 |
타입스크립트 어떻게 쓰는 걸까 (1) (0) | 2023.03.27 |
댓글