Inflearn brand logo image

인프런 커뮤니티 질문&답변

JIN LEE님의 프로필 이미지
JIN LEE

작성한 질문수

한 입 크기로 잘라먹는 타입스크립트(TypeScript)

타입 단언

타입단언과 타입 캐스팅 관련해서 질문 있습니다!

해결된 질문

작성

·

110

0

1번 질문: 타입단언강의 마지막 부분에서 타입 단언은 타입 스크립트 컴파일러가 그렇게 믿도록 만드는 것이지 실제로 타입을 바꾸는 건 아니다, 업캐스팅 다운캐스팅하고는 다르다 라고 하셨는데 그러면 업캐스팅을 할때는 완전히 타입 자체를 바꾸게 되는건가요?? 2번 질문: non, null 단언은 타입을 바꾸는 것이 아니라서 실제로 값이 없을 때 사용하면 오류가 날 수 있어서 약간 위험한 문법이라고 하셨는데 as로 하는 타입단언도 마찬가지로 조심히 사용해야하는 문법인건가요?? 감사합니다!!

답변 2

1

이정환 Winterlood님의 프로필 이미지
이정환 Winterlood
지식공유자

안녕하세요 이정환입니다.

순서대로 답변드리겠습니다.

 

1) 업 캐스팅은 타입 단언과 달리 실제로 타입이 변경되는 것인가?

네 그렇습니다. 다음 예제에서 num2에 저장된 num1의 값은 기존 타입(Number 리터럴 타입)에서 새로운 타입(Number 타입)으로 변경된다고 볼 수 있습니다.

const num1:10 = 10;
const num2:number = num1;

물론 타입이라는 것은 여러 값을 포함하는 집합으로 이해할 수 있기 때문에 10이라는 값은 여전히 Number 리터럴 타입에 포함되는 것도 맞습니다. 중요한 포인트는 기존 Number 리터럴 타입의 변수에 담겨 있던 값이 이제는 Number 타입의 변수에 담기게 되기 때문에 앞으로 Number 타입으로 사용이 될 것 이라는 겁니다.

 

2) NonNull 단언과 As 단언의 차이

모든 타입 단언은 위험합니다. 타입 검사를 무시하고 타입스크립트 컴파일러에게 강제로 특정 타입으로 변환해 검사하도록 하기 때문입니다.

0

JIN LEE님의 프로필 이미지
JIN LEE
질문자

감사합니다!!

JIN LEE님의 프로필 이미지
JIN LEE

작성한 질문수

질문하기