타입스크립트 정리 글은 이웅재님의 강의와 강의록을 참고하여 작성하였습니다. (짱짱)
오류가 있다면 언제든지 댓글 부탁드립니다.
1. 타입추론
- 기본적으로 타입을 명시적으로 쓰지 않을 때 추론하는 방법에 대한 규칙
- 명시적으로 쓰는 것은 타입 추론이 아니라
코드를 읽기 좋게 하는 지름길
- let 은 기본적으로 우리가 아는 기본 자료형으로 추론
- const 는
리터럴 타입
으로 추론
- 오브젝트 타입을 타입을 쓰지 않으면, 프로퍼티는 let 처럼 추론
- const person = {name: ‘Mark’, age: 35}; 면
- person => {name: string; age: number;} 로 추론
- 대부분은 추론이 쉽다.
- 단순 변수
- structuring, destructuring
- array, 함수의 리턴에서는 원하는데로 얻기가 힘들다.
2. 배열 타입 추론
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| const array1 = []; const array2 = ['a', 'b', 'c']; const array3 = ['a', 1, false];
class Animal { name: string; }
class Dog extends Animal { dog: string; }
class Cat extends Animal { cat: string; }
const array4 = [new Dog(), new Cat()]
|
3. 리턴 타입 추론
1 2 3 4 5 6 7
| function hello(message: string | number) { if (message === 'world') { return 'world'; } else { return 0; } }
|
리터럴타입의 ‘world’이거나 0이 나온다.
4. 유니온 타입과 타입 가드
타입가드
Type guard
어떤 Scope에서 타입을 보증하는 런타임 체크를 수행하는 몇 가지 표현식이다. 타입 가드를 정의하기 위해서, 리턴 타입이 Type predicate
인 함수를 정의 할 필요가 있다.
Type predicate
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| interface Person { name: string; age: number; }
interface Car { brand: string; wheel: number; }
function isPerson(arg: any): arg is Person { return arg.name !== undefined; }
function hello(arg: Person | Car) { if (isPerson(arg)) { console.log(arg.name); } else { console.log(arg.brand); } }
|
참고링크
- https://infoscis.github.io/2017/06/19/TypeScript-handbook-advanced-types/