타입 단언이란?
타입스크립트보다 개발자가 어떤 타입이 들어올지를 더 잘 알고 있으니 개발자가 정한걸 우선시해라~~ 라고 타입을 정의해놓는 것을 말한다.
간단한 예제
var a; //이러면 타입은 any가 됨
//...
a = 'stringA'; //a에 문자할당
//...
var c = a; //c는 문자가 된다는 것을 알 수 있음.
a라는 변수를 선언해놓고,
변수 c에 a를 담았을때, c의 타입은 알 수 없는 상태이다.
그러나 중간에 a를 문자열을 담으면 string, 숫자를 담으면 number 등 어떤 것이 나올지 개발자는 알기 때문에 미리 타입을 단언해놓을 수 있다. (아래참고)
타입단언 as
var a; //이러면 타입은 any가 됨
a = 'stringA'; //a에 숫자할당
var c = a as string;
이렇게 타입 단언을 통해서 c에 넣는 a는 string이라는 것을 알려줄 수 있다.
간단한 예제2
DOM 에도 타입단언을 통해 코드를 줄일 수 있다.
var div = document.querySelector('div'); //마우스 오버해보면 div는 null이거나 HTMLDivElement임!
if (div) { //div가 null 일수도 있기때문에 항상 이렇게 방어코드를 작성해줘야함
div.innerText = 'zz';
}
우리가 흔히 쓰는 document.querySelector은 null이거나 element를 찾아낸다.
위의 예시를 보면 div를 선언해서 그 div에 innerText로 'zz'라는 문자를 넣을 때,
div가 없을 가능성이 있으니 if문을 이용하여 방어코드를 꼭 삽입해주어야한다.
이 코드를 타입 단언을 통해 방어코드 없이 작성할 수 있다. (아래참조)
타입단언 as HTMLDivElement
var typeDiv = document.querySelector('div') as HTMLDivElement;
typeDiv.innerText = 'zz';
타입단언을 통해 div를 선언하면 해당 태그는 방어코드 없이 작성이 가능하게 된다.
반응형
'Typescript' 카테고리의 다른 글
[typescript 기본] 타입호환 (함수/제네릭 예제) - 어디까지 어떻게 호환되나요 ? (0) | 2022.01.16 |
---|---|
[typescript 기본] 타입가드 is와 타입단언 as (0) | 2022.01.16 |
[typescript 예제] 기본내용으로 문제풀어보기 (0) | 2022.01.06 |
[typescript 기본] 제네릭 문법 (0) | 2022.01.06 |
[typescript 기본] class와 prototype (0) | 2022.01.03 |