TS for New Programmer

1. JavaScript의 이상한 점


if ("" == 0) {
  // 참입니다! 근데 왜죠??
}
if (1 < x < 3) {
  // *어떤* x 값이던 참입니다!
}
const obj = { width: 10, height: 15 };
// 왜 이게 NaN이죠? 철자가 어렵네요!
const area = obj.width * obj.heigth; // <- 오타

자바스크립트는 stringnumberobjectundefined 같은 원시 타입을 가지고 있지만, 전체 코드베이스에 일관되게 할당되었는지는 미리 확인해 주지 않는다.

대부분의 프로그래밍 언어는 이런 종류의 오류들이 발생하면 오류을 표출해주고, 일부는 코드가 실행되기 전인 컴파일 중에 오류를 표출해준다. 프로그램의 규모가 커질수록 이런 이상한 점들은 큰 문제를 일으킬 수 있다.

2. TypeScript: 정적 타입 검사자 (TypeScript: A Static Type Checker)


정적검사: 프로그램을 실행시키지 않으면서 코드의 오류를 검출하는 것

// @errors: 2551
const obj = { width: 10, height: 15 };
const area = obj.width * obj.heigth;