모든 프로그래밍 언어에는 타입 시스템이 있다
: 언어에서 사용할 수 있는 아주 여러가지 값들을 어떤 기준으로 묶어서 타입으로 정할지 결정하고 또 코드의 타입을 언제 검사할지 그리고 어떻게 검사할지 등의 우리가 프로그래밍 언어를 사용할 때 타입과 관련해서 지켜야 하는 규칙을 모아둔 체계
타입 시스템은 크게 두 가지로 나눌 수 있음

JS가 사용하는 동적 타입 시스템은 기본적으로 변수의 타입들을 코드가 실행되는 도중에 결정하기 때문에 우리가 미리 변수에 타입을 설정하지 않아도 된다는 유연함을 장점으로 가짐
let a = "hello";
→ 변수를 타입들을 코드가 실행되는 도중에 결정
밑 코드에서 a는 첫 번째 라인에서는 문자열 값을 담기 때문에 문자열 타입인 string이고, 두 번째 라인에서는 숫자 값을 담기 때문에 숫자 타입인 number 타입임
let a = "hello"; // 문자열
a = 20001008; // 숫자
장점: 변수 하나로 여기저기 다 활용할 수 있음