| 자료형 종류 | 타입 | 비고 |
| 문자열 | string | 문자열 리터럴 포함 |
| 숫자형 | number | NaN, Infinity 포함 숫자형 리터럴 포함 |
| 불린형 | boolean | |
| undefined | undefined | |
| null | null | |
| 인터페이스 | Interface | 객체의 구조를 정의 |
배열, 튜플
// 배열
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('일반 상품');
}
값 대신 타입을 쓰고 ; 세미콜론을 적어준다.
intellisense sugguest (Ctrl + i ) 로 어떤 프로퍼티가 있는지 알 수 있다.
? 를 붙여주면 옵셔널 프로퍼티
let stock: { [id: string]: number } = {
c001: 3,
c002: 0,
c003: 2,
};
//키 id 는 string 타입, 값은 number
프로퍼티 개수를 정하지 않고 프로퍼티 값의 타입을 정할 수 있다.
즉 객체의 키- 값 모두 타입을 지정할 수 있다.
any
const parsedProduct = JSON.parse('{ "name": "코드잇 토트백", "price": 12000 }') as { name: string; price: number };
const parsedProduct: { name: string; price: number } = JSON.parse('{ "name": "코드잇 토트백", "price": 12000 }');
JSON.parse 함수가 반환하는 값은 any 타입이다.
문자열로 된 JSON 데이터를 JavaScript 객체로 변환해 주지만, TypeScript는 이 객체의 구조를 미리 알 수 없기 때문
타입 검사기(TypeScript)가 그 변수에 대해 어떤 타입인지 추론하지 못해, 타입 안전성을 보장하지 못하기때문에
any 사용을 지양하고, as나 타입 명시를 해주는것이 좋다
함수
function addToCart(id: string, quanity: number): boolean {
if (어떤 조건) {
return false;
}
return true;
}
function addToCart(id: string, quanity: number) {
if (어떤 조건) {
return false;
}
return true;
}
리턴 타입을 주지 않고 리턴값으로부터 추론하게 할 수 있다.
(id: string, quanity: number) => boolean
함수를 값으로 사용하는 경우
(...ids: string[]) => void;
Rest 파라미터는 배열 타입으로 쓴다.
값을 리턴하지 않는 함수는 void 함수라고 하며, 리턴타입도 void로 한다.
'개발 공부 일지 > TypeScript' 카테고리의 다른 글
| 타입스크립트 - Union, Intersection (1) | 2024.09.11 |
|---|---|
| 타입스크립트 - 리터럴 타입 / 타입 별칭 (0) | 2024.09.10 |
| 타입스크립트 - interface (0) | 2024.09.10 |
| 타입스크립트 - enum (1) | 2024.09.10 |
| 타입스크립트 개념 / 시작하기 (0) | 2024.09.10 |