Type
- TypeScript 는 JavaSript 과 거의 동일한 데이터 타입 지원
- 열거 타입 사용해 더 편리하게 사용 가능
Tuple
let x: [string, number[;
x = ["hello", 10];
- 정해진 인덱스에 위치한 요소 외 다른 인덱스의 요소에 접근 시 오류 발생
Null and Undefined
- 다른 모든 타입의 하위 타입
- number 와 같은 타입에 할당 가능
let u: undefined = undefined;
let n: null = null;
- 단 --strictNullChecks 사용 시 오직 any 와 자신들 타입에만 할당 가능
- 예외적으로 undefined 은 void 에 할당 가능
Never
- 절대 발생할 수 없는 타입을 나타냄
- 모든 타입에 할당 가능한 하위 타입 (단, 어떤 타입도 never 에 할당할 수 있거나 하위 타입 아님을 명심)
function error(message: string): never {
throw new Error(message);
}
// 반환 타입이 never로 추론
function fail() {
return error("Something failed");
}
// never를 반환하는 함수는 함수의 마지막에 도달 불가능
function infiniteLoop(): never {
while (true) {
}
}
Type assertions
let someValue: any = "this is a string";
let strLength: number = (<string>someValue).length;
let someValue: any = "this is a string";
let strLength: number = (someValue as string).length;
Function
- JS 과 동일하게 named function, anonymous function 생성 가능
- 함수 외부 변수 참조 가능 (변수 capture)
let lastNum = 100;
function addTolastNum(x,y) {
return x + y + lastNum;
}
Function Types
- 반환문을 통해 반환 타입 파악 가능 -> 반환 타입 생략 O
function add(x: number, y: number): number
{ return x + y;}
let myAdd = function(x: number, y: number): number
{ return x + y };
- 타입 2종류: 매개변수 타입, 반환 타입
- 매개변수 타입과 반환 타입 사이에 '=>' 사용해 반환 타입 분명하게 선언 가능
- 만약 값을 반환하지 않는 함수라면 void 를 써서 표시
- 캡처된 변수는 타입에 반영되지 않음 (API 구성 X)
Inferring the types
- Contextual typing: TypeScript 컴파일러로 타입 추론 (한쪽에만 타입 있어도 타입 도출 가능)