이 글은 udemy의 Typescript 강의를 보고 정리한 글입니다!
강의 링크: https://www.udemy.com/course/best-typescript-21/
소스 코드: https://github.com/Mirim-Study/Typescript
섹션 2: TypeScript 기본 & 기본 타입 (16 ~ 20)
Core Types
4. object (객체)
중괄호 안에 키 값 쌍을 넣는 방식이다.
ex) {age: 30}
const person = {
name: 'Maximilian',
age: 30
};
객체 타입
(타입스크립트가 추론한 객체 타입이기도 하다.)
객체를 생성할 때는 라인마다 ,를 붙여주지만
타입을 입력할 때는 라인마다 ;를 붙여줘야 한다.
const person: {
name: string;
age: number;
};
중첩된 객체 및 타입
객체 타입 안에 객체 타입이 있는 중첩 객체도 생성할 수 있다.
const product = {
id: 'abc1',
price: 12.99,
tags: ['great-offer', 'hot-and-new'],
details: {
title: 'Red Carpet',
description: 'A great carpet - almost brand-new!'
}
}
// 위 객체의 타입
{
id: string;
price: number;
tags: string[];
details: {
title: string;
description: string
}
}
5. Array (배열)
문자열, 불리언, 객체, 배열 없이 데이터를 저장할 수 있다.
중첩 배열을 입력할 수도 있고 데이터를 혼합( [문자열, 숫자, 불리언] )할 수도 있습니다.
배열의 타입을 유연하게도 제한적으로도 지정할 수 있습니다.
ex) [1,2,3]
let favoriteActivities: string[];
favoriteActivities = ['Sports'];
// favoriteActivities = 'Sports'; // ERROR (string타입 배열인데 문자열이어서)
// favoriteActivities = ['Sports', 1]; // ERROR (string타입 배열에 number타입인 1이 들어가서)
Array 타입
'데이터 타입'[]
ex) number[], boolean[]
any
['Sports', 1]와 같이 혼합된 배열을 작동하고자 한다면 any 타입을 이용해서 할 수 있다.
any는 아주 유연하지만 유연성은 모든 장점, 타입, 좋은 기능들을 활용하지 못하게 할 수 있어서
자주 사용할 타입은 아니다.
6. Tuple (튜플)
배열이지만 길이와 타입이 고정된 배열이다.
ex) [1, 2]
const person: {
name: string;
age: number;
hobbies: string[];
role: [number, string];
} = {
name: 'Maximilian',
age: 30,
hobbies: ['Sports', 'Cooking'],
role: [2, 'author']
};
Tuple 타입
Tuple은 Array와 생성 방법이 같기 때문에 타입을 지정하지 않으면
타입스크립트가 Union(공용체) 타입으로 추론을 한다.
7. enum (열거형)
식별자들을 중괄호 쌍 안에 넣는 방식입니다.
우리가 코드 내에서 작업 가능한 인간이 읽을 수 있는 라벨을 입력하고,
라벨들은 값을 지정하지 않으면 0부터 시작하여 값을 증가시킨다.
값 지정도 숫자형, 문자열 등 혼합이 가능하다.
ex) enum { NEW, OLD }
enum Role { ADMIN, READ_ONLY, AUTHOR } // 0, 1, 2
enum Role { ADMIN = 5, READ_ONLY, AUTHOR } // 5, 6, 7
enum Role { ADMIN = 'ADMIN', READ_ONLY = 100, AUTHOR = 'AUTHOR' }
'TypeScripte' 카테고리의 다른 글
[TypeScript] TypeScript 기본 & 기본 타입 (1) (0) | 2022.05.18 |
---|---|
[TypeScript] TypeScript 시작하기 (0) | 2022.05.11 |
댓글