자바스크립트는 동적 타입의 언어다
그래서 변수의 타입은 런타임(컴퓨터에서 프로그램이 실행되고 있을 때)에 의해 결정된다. (코드 실행)
반면 타입스크립트는 정적 타입 언어로 변수타입은 컴파일 타임에 결정된다. (소스 코드를 보고)
여기서 컴파일이란 개발자가 즉 인간이 작성한 소스 코드를 기계가 이해하는 기계어 코드로 바꿔주는 과정
타입오류가 정적 타입 언어은 컴파일시, 동적 타입 언어은 런타임시 발견되니까 동타 즉 자바스크립트
사용자에게 버그 노출될 확률이 높아진다
정적 타입 언어, 타입스크립트가 생산성이 높다는 건?
const eunji = {friends : ['지연', '창엽']};
// 속성 네임 오류
const total = eunji.friend.length
동적 타입 언어에서는 ide가 컴파일 타임에 eunji타입을 모르니까 속성이 틀려도 오류가 안남
반면 정적 타입은 안남 > 실수 방지
const person1 = { name: 'd'}
const person2 = { name: 'ds'}
const product = { name: 'dd'}
동적타입에선 자신이 사용하려는 객체 속성을 개발자가 다~~ 알아야 돼
그래서 리팩토링 할 때나.. 되게 귀찮아
위 예시에서 person1, person2의 name만 firstName으로 바꾸고 싶을 때
한 번에 바꾸려면 product의 name도 같이 바뀔 위험이 있음
반면 정적 타입은 interface Person {name: string } < 여기 부분에서만 이름바꾸기 (cmd+r) 해주면
알아서 잘 바뀜!
타입스크립트 설치
tsconfig.json 에서
target: "es5" > 컴파일 타겟
module: "commonjs"
strict: true
근데 기존 자스 프로젝트를 타스로 포팅하는 경우엔 false로 설정하고 strict 옵션을
하나씩 true로 바꿔주는 것도 방법
Tip
ts에 2.ts에 만들어둔 함수(funciton f1)를 임포트 하려고 한다!
f1 쓴 다음 cmd + . auto import
멀티 선택은 원하는 단어를 선택한 후 cmd + d 입력하면 취소하려면 esc
멀티 커서 cmd opt 화살표