type annotaion (타입 주석) : 변수의 type을 지정하는 방식
콜론과 함께 number, string 등을 입력하여 변수의 타입을 지정
let num1: number = 123;
let num2: number = -123;
let num3: number = 0.123;
let num4: number = -0.123;
let num5: number = Infinity;
let num6: number = -Infinity;
let num7: number = NaN;
: number 로 타입 정의

위 사진처럼 number 타입으로 선언한 변수에는 number 타입만 넣을 수 있다.
number 외의 타입 (ex. string)을 넣을 수 없고,
number 외의 타입의 함수를 사용할 수 없다. (ex. toUpperCase)
toUpperCase()? 첫 글자를 대문자로 바꿔주는 함수
toFixed(p)? p만큼 소수점 이하의 자리수를 정확하게 갖는 문자열로 반환해주는 함수
let str1: string = "hello"; // 큰 따옴표
let str2: string = 'hi'; // 작은 따옴표
let str3: string = `hello`; // 백틱
let str4: string = `hello ${num1}`;
: string 로 타입 정의

위 사진처럼 string 타입으로 선언한 변수에는 string 타입만 넣을 수 있다.
string 외의 타입 (ex. number)을 넣을 수 없고,
string 외의 타입의 함수를 사용할 수 없다. (ex. toFixed)
let bool1: boolean = true;
let bool2: boolean = false;
: boolean 로 타입 정의
let null1: null = null;
: null 로 타입 정의
let unde1: undefined = undefined;
: undefined 로 타입 정의
아래 코드는 javascript에서는 가능하지만, typescript에서는 불가능하다.
let numA: number = null;

보통 null 타입이 아닌 변수에 임시로 null 값을 넣고 싶을 때 이렇게 사용하는데,
typescript에서도 사용하고 싶다면
tsconfig.json 파일의 "compilerOptions"에서
"strictNullChecks": false
코드를 추가해주면 null을 엄격하게 검사하지 않기 때문에
null 값을 null 타입이 아닌 변수에 넣을 수 있다.
: 값 그 자체가 타입이 되는 타입
(값 그 자체로 변수의 타입을 정의)
let numA: 10 = 10;
let strA: "hello" = "hello";
: 값 자체 로 타입 정의
numA는 10을 type으로 정의했기 때문에 10 외의 값이 들어오면 오류가 나고,
strA는 "hello"를 type으로 정의했기 때문에 "hello" 외의 값이 들어오면 오류가 난다.
boolean도 마찬가지로 작동한다.
