타입 추론(Inference)과 타입 단언(Assertion)
모든 변수에 일일이 : string, : number를 적는 것은 피곤한 일입니다. 타입스크립트 엔진은 매우 똑똑해서, 우리가 초기값을 할당하는 순간 스스로 타입을 유추하고 결정합니다. (이를 타입 추론이라 부르며, 실무에서는 굳이 뻔한 타입은 생략하는 편입니다.)
타입스크립트 컴파일러보다 개발자인 내가 데이터의 정체를 더 정확하게 알고 있을 때 컴파일러의 경고를 끄고 억지로 타입을 덮어씌우는 문법입니다. 하지만 내가 틀렸을 경우 곧바로 런타임 에러(버그)로 이어지므로 남용은 절대 금물입니다.
// 타입을 굳이 : string 이라고 안 적어줘도,
// "minstudio"라는 문자열이 들어가는 걸 보고 TS가 스스로 "아, 이 변수는 string이구나!" 하고 눈치챕니다.
let autoName = "minstudio";
// autoName = 123; // ❌ 당연히 에러 발생!
let arr = [1, 2, "hello"]; // (string | number)[] 로 자동 추론됨
// ---
// 서버에서 받아온 알 수 없는 데이터 (any)
let serverData: any = "이것은 긴 문자열입니다.";
// TS는 any라서 문자열 메서드(length)를 추천해주지 않지만,
// 개발자인 내가 100% 확신할 때 "야, 이거 무조건 string이니까 내 말 믿어!" 라고 단언합니다.
let strLength: number = (serverData as string).length;