이런 것들을 지킴으로 더 좋은 코드를 작성할 수 있다
타입스크립트의 내장 컴파일러는
읽기 전용 타입, 강력한 추론, 완벽에 가까운 다형성, 좋은 코딩 타입을 촉진하는 완벽한 구조 기반 타입화를 지원함과 동시에 자바스크립트의 호환을 유지하면서도 놀라운 표현력을 제공한다
자바스크립트에는 포인터나 참조가 없다
값과 참조 타입을 사용한다 (값은 원시 값을 이야기 하는듯)
값은 불변이다
이 책에서는 값과 참조에 대해 구분 없이 값이라는 용어를 사용한다
타입스크립트는 웹 앱, 모바일 앱, node.js, 사물인터넷 등을
뒷받침할 언어다
실수를 방지하고, 자신과 미래의 개발자들에게 문서화를 제공,
리팩토링을 쉽게 만들며, 단위 테스트의 숫자를 반으로 줄임으로 더 안전한 프로그램을 구현할 수 있게 보장한다
생산성을 배로 늘려주는 타입 스크립트
타입스크립트가 안전하다는 것은 타입에 대한 안정성을 뜻한다
일부 언어는 이런 실수가 있는 코드를 최대한 실행하려 한다
개발자가 원하는 것은 무엇이든 할 수 있다고 믿기 때문이다
3 + [] // 문자열 "3" 으로 평가
let obj;
obj.foo // undefined 로 평가
function a(b) {
return b/2
}
a("z") // NaN 으로 평가
명백하게 잘못된 동작을 자바스크립트는 최대한 결과를 도출한다
만약 자바스크립트가 실수를 바로잡으려고 노력하는 것으로 에러를 발생시킨다면 실수를 저지른 시점과 실수를 인지하는 시점이 달라진다
실수를 저지를 개발자가 아닌 다른 사람이 발견해 알려주는 경우가 발생
자바스크립트는 프로그램이 실행할 때가 되어서야 실수를 알려준다
이러한 부분을 해결하기 위해 타입스크립트가 등장했다
에러를 알려준다는 사실 보다 더 중요한 것은 에러를 알려주는 시점이다
타입스크립트는 개발자가 편집기에 코드를 작성하는 순간 에러를 발생시킨다
3 + [] // 에러 TS2365: '3' 타입과 'never[]' 타입에
// 연산자 '+'를 적용할 수 없음
모든 타입 관련 버그가 사라질뿐 아니라 코드를 작성하는 방식도 달라진다
개발자는 프로그램 구상 시 타입 수준으로 먼저 생각하고 값 수준으로 생각하게 될 것이다
프로그램을 설계하면서 미리 극단적인 상황을 고려하고, 가독성과 유지보수성이 좋은 코드를 작성하게 된다