minstudio

타입 추론(Inference)과 타입 단언(Assertion)

모든 변수에 일일이 : string, : number를 적는 것은 피곤한 일입니다. 타입스크립트 엔진은 매우 똑똑해서, 우리가 초기값을 할당하는 순간 스스로 타입을 유추하고 결정합니다. (이를 타입 추론이라 부르며, 실무에서는 굳이 뻔한 타입은 생략하는 편입니다.)

🕵️‍♂️ TS 탐정의 타입 추론 let name = "민수"; "흠, 우변이 쌍따옴표니까 좌변 name은 안 봐도 string이군!" 타입 선언 생략 초기값을 할당하는 순간 똑똑한 TS 엔진이 스스로 타입을 유추하고 결정합니다.


타입스크립트 컴파일러보다 개발자인 내가 데이터의 정체를 더 정확하게 알고 있을 때 컴파일러의 경고를 끄고 억지로 타입을 덮어씌우는 문법입니다. 하지만 내가 틀렸을 경우 곧바로 런타임 에러(버그)로 이어지므로 남용은 절대 금물입니다.

🎭 as 키워드는 "가면(Mask)"입니다 const input = document.getElementById('id') as HTMLInputElement; TS 컴파일러의 눈을 속이기 위해 겉으로 가면만 씌우는 행동 실제 데이터가 바뀌는 것이 아니며, 내가 틀렸을 경우 곧바로 버그로 이어지므로 남용 금물!
// 타입을 굳이 : 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;
타입 추론(Inference)과 타입 단언(Assertion) | Minstudio