기본 데이터 유형
// 불리언 (Boolean)
let isComplete: boolean = true;
// 숫자 (Number)
let decimalValue: number = 8;
let hexValue: number = 0xA1B2;
let binaryValue: number = 0b1101;
let octalValue: number = 0o755;
// 문자열 (String)
let colorName: string = "green";
colorName = 'yellow';
// 템플릿 리터럴 (Template Literals) 사용
let fullName: string = `Alice Wonderland`;
let age: number = 25;
let introduction: string = `안녕하세요, 저는 ${fullName}입니다.
내년에는 ${age + 1}살이 됩니다.`;
// 배열 (Array)
let numbers: number[] = [1, 2, 3];
let strings: Array<string> = ["apple", "banana"];
// 튜플 (Tuple)
let coordinates: [number, number, string] = [40.7484, -73.9857, "New York"];
console.log(coordinates[0]); // 첫 번째 요소 출력
coordinates[2] = "Los Angeles"; // 세 번째 요소 변경 가능
// 열거형 (Enum)
enum Direction { North, East, South, West };
let chosenDirection: Direction = Direction.East;
// 수동 값 할당
enum Status { Pending = 1, Completed = 2, Failed = 3 };
let currentStatus: Status = Status.Completed;
// never 타입 (가능하지 않은 상태를 나타냄)
function throwError(message: string): never {
throw new Error(message);
}
function endlessLoop(): never {
while (true) {}
}
// any 타입 (모든 형식을 허용)
let unknownValue: any = 42;
unknownValue = "Hello";
unknownValue = false;
변수 선언
var 키워드
// 함수 내부에서의 var 선언
function exampleVar() {
var message = "Hello!";
console.log(message); // Hello!
}
// 재선언 가능
var x = 10;
var x = 20; // 중복 선언 가능
console.log(x); // 20
// 함수 클로저와 var
function outerFunction() {
var outerVariable = 10;
return function innerFunction() {
console.log(outerVariable); // 클로저로 접근 가능
}
}
outerFunction()(); // 10
let 키워드
// 블록 스코프
function useLet(input: boolean) {
let a = 10;
if (input) {
let b = a + 1;
console.log(b); // 입력값에 따라 출력
}
// b는 이곳에서는 접근 불가
}
// 반복문에서의 let 사용
for (let i = 0; i < 3; i++) {
setTimeout(() => console.log(i), 100); // 각각의 i 값 유지
}
// 재선언 불가
let y = 10;
// let y = 20; // 에러: 동일한 범위 내에서 재선언 불가
const 키워드
// 불변 참조
const pi = 3.14;
// pi = 3.1415; // 에러: 재할당 불가
// 객체 상수 선언
const settings = {
theme: "dark",
fontSize: 14,
};
settings.theme = "light"; // 속성 변경 가능
// settings = {}; // 에러: 객체 자체 재할당 불가
구조 분해 선언 (Destructuring Declaration)
배열 구조 분해
let fruits = ["apple", "banana"];
let [firstFruit, secondFruit] = fruits;
console.log(firstFruit); // apple
console.log(secondFruit); // banana
// 나머지 구문 사용
let [head, ...tail] = [1, 2, 3, 4];
console.log(head); // 1
console.log(tail); // [2, 3, 4]
객체 구조 분해
let user = {
name: "John",
age: 30,
location: "New York"
};
let { name, age } = user;
console.log(name); // John
console.log(age); // 30
// 이름 변경
let { name: userName, age: userAge } = user;
console.log(userName); // John
console.log(userAge); // 30
// 기본값 설정
let { location: userLocation = "Unknown" } = user;
console.log(userLocation); // New York
함수 매개변수에서의 구조 분해
function printUser({ name, age }: { name: string, age: number }) {
console.log(`${name} is ${age} years old.`);
}
printUser({ name: "Jane", age: 28 });
스프레드 연산자 (Spread Operator)
// 배열 합치기
let array1 = [1, 2];
let array2 = [3, 4];
let combined = [...array1, ...array2]; // [1, 2, 3, 4]
// 객체 병합
let defaultSettings = { theme: "light", fontSize: 12 };
let customSettings = { ...defaultSettings, theme: "dark" }; // { theme: "dark", fontSize: 12 }