TypeScript
- JS의 Dynamic typing 지원 =>
2 - '1'
, +'8'
등이 number
연산 가능.
- 스케일이 커질 수록 문제 발생 가능성.
- TS는 JS 문법을 그대로 사용하면서, 타입문법을 더해서 사용하게 해줌.
- 또한 Error message가 정확.
개요
Type alias
- Type을 변수에 담아서 사용 가능.
type
키워드를 이용하며, type
명은 보통 대문자로 시작.
type Name = string | number;
let 이름: Name = 'kim';
Union type
let 이름 :string | number = 'kim';
const 회월들: (number | string)[] = [1, '2', 3];
const 오브젝트: { a: string | number } = { a: 'dfsd' };
let 나이: string | number;
나이 + 1;
string
과 number
둘다 더하기 연산이 가능한데, 왜 에러가 날까?
- Union type은
string
타입도 number
타입도 아닌 string | number
타입(새로운 타입)이기 때문.
Option
- 타입 지정에서 해당 타입을 옵션으로 두려면
?
사용.
변수?: number
은 변수: number | undefined
(union type) 와 같은 의미.
- 객체에서 옵션을 줄 수 있는데,
key?: number
형식으로 지정 가능.
원시 값(primitive value)
string
, number
, boolean
, null
, undefined
, bigint
등 가능.
let 이름: string = 'kim';
이름 = 123;
객체(object)
- 객체나 배열 타입은
[]
, {}
로 설정.
- 값의 형식지정 해야함.
const 이름: string[] = ['kim', 'park'];
const 나이: { age: number } = { age: 3 };
객체
const 나이: { age?: number } = { };
type Member2 = {
[key: string]: string;
};
const john2: Member2 = { name: 'kim' };
Tuple type
- 배열(array)에서 사용 가능.
- 원소의 순서 마다 타입 지정.
type Member = [number, boolean];
const john: Member = [123, true];
function
parameter; 매개변수
와 retrun; 반환 값
에 타입 지정.
- 또한 파라미터에 타입이 지정되어있으면, 함수 호출시 파라미터가 비어있으면 오류.
number
를 매개변수로 받고, number
를 리턴하는 함수.
function 함수(x: number): number {
return x * 2;
}
function 함수(x: number): void {
1 + 1;
}
class
class User {
name: string;
constructor(name: string) {
this.name = name;
}
}
any
vs. unknown
any
는 타입 해제.
unknown
은 정해지지 않은 타입.
- 꼭 이용해야 한다면 비교적
unknown
이 안전.
let 이름: any;
이름 = 123;
이름 = false;
이름 = 'ㅇㅇㅇ';
이름 = [];
let 변수: string = 이름;
let 이름2: unknown;
이름2 = 123;
이름2 = false;
이름2 = 'ㅇㅇㅇ';
이름2 = [];
let 변수: string = 이름2;
✅ TIP
- TS는 변수 초기화(선언, 할당) 과정에서 자동으로 타입이 지정됨.
- 모든 타입을 매번 지정할 필요가 없음.
let 이름 = 'kim';
let 나이 = 300;
let 결혼 = true;
const 회원들 = [1, 2, 3];