TypeScirpt
const val : number = 123
JavaScript
const val = 123;
위 두 코드는 같은 내용이다.
:을 기준으로 왼쪽이 value 오른쪽이 type이라고 생각하면 된다.
- 변수명, 함수명, 객체 속성명 뒤에
: type을 써서 데이터 타입을 지정- 자바스크립트의 원시타입 사용 가능
- 컴파일러가 type을 확인하는 데에 도움
- data type을 처리하는 오류 방지에 도움
- 협업을 할 때 읽기 쉬운 코드가 됨
- 유지보수에 장점

위처럼 타입을 object로 설정해주면 any타입처럼 모든 타입의 값을 할당할 수 있기 때문에 TypeScript 사용 의미가 모호해진다.
=> 해결하기 위해서는 다음과 같이 객체 타입을 명확히 지정해준다.

매개변수와 반환 타입을 명시해주어야 함!!!

타입이 number인 매개변수 1개와 string인 매개변수 1개이고
string값을 반환하는 함수

배열은 string[], Array<string>과 같이 타입을 선언할 수 있다.


위처럼 let과 const만 달리하고 나머지는 다 같게 했는데 WHY!! let으로 한건 string이나 number로 나오고 const로 한건 값이 나오는걸까...??
=> 모두가 알다시피 let은 재할당이 가능하기 때문!!!
튜플 타입이란??
=> 길이가 고정되고 인덱스 타입이 고정되는 타입!!
=> 여러 다른 타입으로 이루어진 배열을 안전하게 관리
=> 배열 타입의 길이 조절

unknown 타입이란??
=> any처럼 모든 값을 허용하지만 상대적으로 엄격
=> 개발자가 직접 명시해야함
=> assertion 혹은 타입 가드(타입이 맞는지 검증하는 것)와 함께 사용

이렇게 any타입으로 설정하면 아무런 에러가 발생하지 않는다.
하지만!! unknown 타입으로 설정하면??


string부터 객체까지 읽어올 수가 없다...!!

두번째줄은 타입 가드!!
마지막 줄은 타입을 강제하는 assertion!!
함께 사용!
void 타입이란??
=> 함수의 반환이 없는 경우 명시
=> 타입 추론에 위임(어떠한 행동을 해도 TypeScript에서 void로 추론)