변수 선언과 타입 지정
타입과 값 동시 선언
// student.ts
let studentName: string = "지민";
const studentScore: number = 95;
console.log(studentName); // "지민"
console.log(studentScore); // 95
선언 후 초기화
let courseCode: string;
console.log(courseCode); // undefined
courseCode = "CS101";
console.log(courseCode); // "CS101"
타입 추론
TypeScript는 초기값으로 타입을 자동 추론합니다.
let subject = "수학";
console.log(subject); // "수학"
// subject = 42; // 오류: number는 string에 할당 불가
선언 키워드: var, let, const
var: 함수 스코프와 호이스팅
function testScopeWithVar() {
var points: number = 10;
if (true) {
var points: number = 20; // 재선언, 함수 전체에 영향
console.log("블록 내:", points); // 20
}
console.log("함수 내:", points); // 20
}
testScopeWithVar();
let: 블록 스코프
function testScopeWithLet() {
let grade: string = "A";
if (true) {
let grade: string = "B"; // 별도 변수
console.log("블록 내:", grade); // "B"
}
console.log("함수 내:", grade); // "A"
}
testScopeWithLet();
const: 상수와 블록 스코프
재할당 불가, 초기화 필수
const MAX_USERS: number = 100;
console.log(MAX_USERS); // 100
// MAX_USERS = 200; // 오류: 상수 재할당 불가
스코프의 이해
전역 스코프
전역에서 선언된 변수는 어디서나 접근 가능
let appStatus: boolean = true;
function checkStatus() {
console.log("앱 상태:", appStatus); // true
}
checkStatus();
지역 스코프
함수 내 변수는 외부 접근 불가
function calcTotal() {
let totalPrice: number = 15000;
console.log("총액:", totalPrice); // 15000
}
calcTotal();
// console.log(totalPrice); // 오류: 함수 외부 접근 불가
클래스 스코프
클래스 멤버는 접근 제어자로 범위 조정
class Product {
private stock: number = 50;
public updateStock(amount: number): void {
this.stock += amount;
console.log("재고:", this.stock);
}
}
const prod = new Product();
prod.updateStock(10); // "재고: 60"
// console.log(prod.stock); // 오류: private 접근 불가
예제: 장바구니 담기
interface Item {
name: string;
price: number;
}
function manageCart() {
const cartItems: Item[] = [];
let itemCount: number = 0;
function addItem(name: string, price: number) {
const newItem: Item = { name, price };
cartItems.push(newItem);
itemCount++;
console.log(`추가됨: ${name}, 총 개수: ${itemCount}`);
}
addItem("노트북", 1500000);
addItem("마우스", 30000);
}
manageCart();
'TypeScript' 카테고리의 다른 글
[TypeScript] 문자열 다루기 (0) | 2025.02.21 |
---|---|
[TypeScript] 정밀한 숫자 처리 (0) | 2025.02.21 |
[TypeScript] 데이터 타입 분석 (0) | 2025.02.21 |
[TypeScript] 시작하기 (0) | 2025.02.21 |
[TypeScript] 타입으로 강화된 JavaScript (0) | 2025.02.21 |