정리에 앞서 타입 스크립트란??
타입을 명시해서 쓸 수 있는 것으로 쉽게 말해서 타입을 딱 정해 놓고 사용하는 것입니다.
ex)
자바스크립트
``` const a = 3; const b = '5'; ```
타입 스크립트
``` const a:number = 3; const b:string = '5'; ```
js에 없는 타입
type script에는 java script에는 없는 타입들이 있습니다.
1. tuple
배열의 타입 순서와 배열 길이를 지정할 수 있습니다.
var arr: [number,string] = [123,'abc'];
2. Any
모든 데이터 타입을 허용 합니다.
3. Enum
Number 또는 String 값 집합에 고정된 이름을 부여할 수 있는 타입
기본적으로 0부터 시작 합니다. (1씩 증가)
[값의 종류가 일정한 범위일 경우 유용]
ex)enum Animal{ Cat='고양이', Dog='강아지' }
4.Void
변수에는 undefined와 null만 할당하고, 함수에는 리턴 값을 설정할 수 없는 타입 입니다.
5. Never
특정 값이 절대 발생할 수 없을 때 사용
type script에 타입 설정하기
- 변수에 타입 설정하기
ex)let str: string='글자'; let num: number=123; let arr:Array=[1,2,3]; let arr2:number[]=[1,2,3]; let arr3:string[]=['a','b','c']; let obj:object={}; let obj:{ type:string , age:number} ={ type:'cat', age:1 };
- 함수에 타입 설정하기
(선택적 프로퍼티 문법을 사용하는 방법도 있지만 선택적 프로퍼티 문법을 아직 설명하지 않았으므로 생략하겠습니다)
function add(a:number , b:number):number{ return a+b; }
연산자
- Union 타입
js의 or 연산자와 같은 의미입니다. (a이거나 b이다)
ex)function getText(text: string | number){ console.log(text); }
Unoion 타입으로 지정하면 각 타입의 공통된 속성에만 접근 가능합니다.
ex)
interface User{ name: string; age: number; } interface Worker{ name: string; dept: dev; } function findWorkerName(person: User | Worker){ person.name; //접근가능 person.age; //접근 불가 person.dept; //접근 불가 }
- intersection 타입
js의 and 연산자와 같은 의미입니다. (a이고 b이다)
각각의 모든 타입이 포함된 객체를 넘기지 않으면 에러 발생합니다.
ex)function getWorker(worker: Developer & Person){ }