종류 타입
문자열 String
숫자형 Number
불린형 Boolean
undefined undefined
null null

배열과 튜플


배열 타입을 만들기 위해선 타입을 적고 [] 를 붙인다. 튜플이란 개수랑 순서가 정해져있는 배열을 뜻한다. [] 안에 순서대로 타입을 쉼표로 구분해서 쓰면 된다.

// 배열
const cart: string[] = [];
cart.push('c001');
cart.push('c002');

// 배열의 배열
const carts: string[][] = [
  ['c001', 'c002'],
  ['c003'],
];

// 튜플
let mySize: [number, number, string] = [175, 30, 'L'];

객체 타입


{} 안에 프로퍼티 이름을 쓰고 : 다음에 타입을 쓰면 된다. 각 프로퍼티는 ; 으로 구분하면 된다. 필수가 아닌 프로퍼티는 프로퍼티 이름 뒤에 물음표를 붙이면 된다.

let product: {
  id: string;
  name: string;
  price: number;
  membersOnly?: boolean; // 필수가 아닌 프로퍼티
  sizes: string[];
} = {
  id: 'c001',
  name: '블랙 후드티',
  price: 129000,
  sizes: ['M', 'L', 'XL'],
};

if (product.membersOnly) {
  console.log('회원 전용 상품');
} else {
  console.log('일반 상품');
}

만약 프로퍼티 갯수를 정하지 않고 값의 타입을 정하고 싶다면 이러한 문법의 사용도 가능하다

let stock: { [id: string]: number } = {
  c001: 3,
  c002: 0,
  c003: 2,
};

any


자바스크립트를 사용할 때와 비슷하게 자유롭게 쓸 수 있는 타입을 말한다. 되도록이면 any 타입을 권장하지 않지만, 어쩔 수 없는 상황에 사용하는 경우 as 키워드를 사용해서 타입을 지정하거나, : 으로 지정할 수 있다.

// as 키워드
const parsedProduct = JSON.parse(
  '{ "name": "토트백", "price": 12000 }'
) as { name: string; price: number };

// : 키워드
const parsedProduct: { name: string; price: number } = JSON.parse(
  '{ "name": "토트백", "price": 12000 }'
);

함수 타입