- "test.ts" 파일 생성
- 터미널에
npm init -y
입력
(현재 폴더를 npm project로 만듬)- 터미널에
npm i typescript -D
입력
("package.json" 파일 안에 "devDepecdencies" 로 추가 : 개발용 모듈이라는 뜻)- 아래의 버젼 숫자를 누르면,
vscode에 원래 설치된 번들을 이용할지 vs 사용자가 설치한 버젼을 이용할지 선택 할 수 있음
특정한 개체가 어떤 타입인지 지정해주는 것.
:
뒤에 타입 지정let a: number; a = 39;
기본적으로 TS는 Static Type,
(개발하는 중간에 Type 체크)
JS는 Dynamic Type 이다.
(런타임에 들어간 다음 Type 체크)
예시 코드
타입들 훑어보기
오브젝트와 레버런스 형태가 아닌 실제 값을 저장하는 자료형
Primitive 형의 내장 함수를 사용 가능한것은 자바스크립트 처리 방식 덕분
6가지 (ES2015 기준)
- boolean
- number
- string
- symbol (ES1025)
- null
- undefined
* literal 값으로 Primitive 타입의 서브 타입을 나타낼 수 있음.
** * 또는 래퍼 객체로 만들 수 있음.
💡 모두 소문자로 써야한다.
딱히 쓸게 없다... 하하~
Template String
접근을 막거나, 필요한 경우에만 허락할때 씀
여기서부터는 non-primitive type
사용 예제
이런식으로 쓰면, Array의 값에 string , number 둘다 넣을 수 있다.
길이가 정해져 있고(2), 앞뒤의 타입이 정확하며 다를 수 있는 자료형.
사용 예시
적폐
하나를 "any"로 지정하면 그 하위 객체들이 모두 "any"가 되기 때문에,
왠만하면 지양하는 자료형임.
잘못된 타입을 넣는 실수를 방지하기 위해서 쓰임.
return 부분에 달아서 아무것도 하지 않겠다는것을 명시하고, 그것을 막는 행위
타입스크립트의 타입시스템
타입을 명시적으로 지정할 수 있다.
혹은 지정하지 않으면, 타입스크립트의 컴파일러가 자동으로 타입을 추론함.
noImplicitAny
StrictNullChecks
이걸보면, 분명 number라고 타입을 지정했는데
f4(-5)의 결과는 undefined가 나오는 것을 알 수 있음.이걸 방지하기 위해선,
StrictNullChecks 옵션을 켜야 함.모든 타입에 자동으로 포함되어 있는 'null' 과 'undefined' 를 제거해줌.
noImplicitReturns
함수 내에서 모든 코드가 값을 리턴하지 않으면, 컴파일 에러를 발생시킴.
모든 통로가 전부다 return 해주도록 강제하는 옵션.
나만의 타입을 만드는 방법
Structural Type System
구조가 같으면, 같은 타입이다.
Nominal Type System
구조가 같아도 이름이 다르면, 다른 타입니다.
duck typing
서브 타입 (1)
서브 타입 (2)
공변
반병
strictFunctionTypes
Aliasing Primitive
Aliasing Union Type
Aliasing Tuple
Aliasing Function
💡 Alias 와 Interface 를 어떻게 구분해서 사용하나?
어떤 Type이 목적이나 존재가치가 명확할 경우 ➡️ Interface
단지 하나의 대상을 가리키거나, 별명으로만 존재할 경우 ➡️ Alias
(* 어디까지나 강사님 기준. 자신만의 기준을 세워보시라!)