Type Assertions = 타입 선언
DOM Asserstion
더 정밀한 선언으로만 적용되는 Type Assertion
js를 제외한 많은 type을 가진 언어들은 type을 개발자 임의대로 변경하는 기능을 가지고 있다.
예를 들어 c에서 int 타입을 => float으로 변경하는것은 가능하다.
2를 2.0이라고 적어주는게 뭐가 불만이겠는가.
반대로 2.5인 float을 2로 변경하는 것은 경고창이 뜨지만 개발자에게 전권을 위임한 c는 이를
경고창만 띄워주고 과감히 실행해준다.
ts의 경우는 어떤지 보자.
const myCanvas=document.getElementById('main_canvas') as HTMLCanvasElement;
const myCanvas = <HTMLCanvasElement>document.getElementById("main_canvas"); // 위와 같음
우선 DOM 객체도 ts에선 type을 가지는데,
위 코드에선 myCanvas는 HTMLCanvasElement라는 타입을 가진 것이다.
DOM에 접근하고 이를 가져오는데 ts는 어떤 node가 떨어질지 모르는 상황에서 기다린다.
그냥 HTMLElement가 들어오는 것 그 자체만 알고 있기 때문에 명시적으로
무슨 타입인지를 정해주어야 하는 것이다.
const x = 'hello' as number;
// error
const any:any=123;
console.log(typeof any) // number
any as number;
console.log(typeof any) // number
마땅한 예시가 떠오르질 않는다 tsc는 추론을 통해 any라고 지정한 타입도 number로 바꾸어버린 것 같다.