📘 타입스크립트의 기본형(Primitive Types)
- number : 모든 숫자를 나타냄
- string : 문자열, 작은따옴표('), 큰따옴표("), 백틱(```)을 사용해 생성 가능
- boolean : 참 or 거짓을 나타냄
- null : 의도적으로 값이 없음(내가 주는 값 / 수를 초기화할 때 null을 할당하면, 그 변수는 "현재는 값이 없다"는 의미)
- undefined : 변수 선언되었으나, 초기화 하지 않아 값이 할당되지 않은 상태
- void : 주로 함수에서 반환 값이 없음을 나타냄.
function logMessage(message: string): void {
console.log(message);
}
- symbol : 고유하고 변경 불가능한 값, 주로 객체의 고유한 프로퍼티 키 만들 때 사용
let uniqueId: symbol = Symbol("id");
- bigint : 큰 정수를 나타내는 타입, number 타입의 범위를 초과하는 정수
let bigNumber: bigint = 1234567890123456789012345678901234567890n;
📘 배열과 튜플
1. 배열 (Array)
- 동일한 타입의 요소를 순차적으로 저장하는 자료 구조
- 배열은 크기가 없다(빈 배열로 해도 오류X)
// 숫자 배열
let numbers: number[] = [1, 2, 3, 4, 5];
// 문자열 배열
let fruits: string[] = ["apple", "banana", "cherry"];
// 여러 타입을 포함하는 배열 (any 사용)
let mixed: any[] = [1, "apple", true];
2. 튜플 (Tuple)
- 고정된 수의 요소를 가진 배열
- 각 요소는 서로 다른 타입
// 튜플: 문자열과 숫자를 포함하는 고정된 길이의 배열
let person: [string, number] = ["Alice", 30];
// 튜플의 요소 접근
console.log(person[0]); // "Alice"
console.log(person[1]); // 30
// 잘못된 타입의 요소 할당 시 오류 발생
// person[0] = 123;
// 오류: Type 'number' is not assignable to type 'string'
📘 객체타입
1. 인터페이스 (Interface)
- 객체의 구조를 정의하는 방법(설명서)으로, 속성과 타입을 명시
interface Person {
name: string;
age: number;
isStudent?: boolean; // 선택적 속성
}
// 객체 생성
const user: Person = {
name: "Alice",
age: 30,
};
// 선택적 속성 사용
const student: Person = {
name: "Bob",
age: 20,
isStudent: true, // 선택적으로 추가
};
2. 타입 별칭 (Type Alias)
- 객체의 구조를 정의하는 또 다른 방법으로, type 키워드를 사용
- 인터페이스와 비슷하지만, 더 다양한 형태의 타입을 정의
type Car = {
brand: string;
model: string;
year: number;
};
const myCar: Car = {
brand: "Toyota",
model: "Camry",
year: 2022,
};
📘 any
- 타입스크립트에서 가장 유연한 타입으로, 어떤 값이든 허용할 수 있는 타입
- 타입오류가 사라짐
- 필요한 경우에만 사용하고, 가능한 구체적인 타입을 지정하는 것이 좋다
(기존 자바스크립트 코드에서 타입스크립트를 도입할 때 유용하게 사용할 수 있어. 처음에는 any로 타입을 지정한 후, 점차적으로 더 구체적인 타입으로 변경 등)
let value: any;
// 다양한 타입의 값 할당 가능
value = 42; // 숫자
value = "Hello, world!"; // 문자열
value = true; // 불리언
value = { name: "Alice" }; // 객체