오늘은 TypeScript에서 변수와 타입에 대해 배웠다. TypeScript는 JavaScript에 타입을 추가한 언어로, 코드의 안정성과 가독성을 높이는 데 큰 도움이 된다. 이번 학습에서는 기본 타입의 종류와 const
, readonly
, any
, unknown
, 그리고 union
타입에 대해 중점적으로 다루었다.
TypeScript에서는 다양한 기본 타입을 제공한다. 주요 기본 타입은 다음과 같다:
boolean: true
또는 false
값을 가질 수 있다.
let isDone: boolean = false;
number: 모든 숫자 값을 가질 수 있다. 정수와 부동 소수점 모두 포함된다.
let decimal: number = 6;
let hex: number = 0xf00d;
let binary: number = 0b1010;
let octal: number = 0o744;
string: 텍스트 데이터를 나타낸다.
let color: string = "blue";
color = 'red';
Array: 동일한 타입의 요소들로 이루어진 배열을 나타낸다.
let list: number[] = [1, 2, 3];
let list: Array<number> = [1, 2, 3];
Tuple: 고정된 요소 수와 타입을 가지는 배열을 나타낸다.
let x: [string, number];
x = ["hello", 10];
Enum: 열거형으로, 숫자 값 집합에 이름을 부여할 수 있다.
enum Color {Red, Green, Blue}
let c: Color = Color.Green;
Any: 어떤 타입의 값도 가질 수 있다.
let notSure: any = 4;
notSure = "maybe a string instead";
notSure = false;
Void: 일반적으로 함수에서 반환 값이 없을 때 사용된다.
function warnUser(): void {
console.log("This is my warning message");
}
Null와 Undefined: 각각 null
과 undefined
값을 가질 수 있다.
const
와 readonly
const: 변수의 값을 변경할 수 없도록 선언한다. 재할당이 불가능하다.
const numLivesForCat = 9;
numLivesForCat = 1; // 오류 발생
readonly: 주로 인터페이스 또는 클래스의 속성에 사용되며, 초기화 이후에는 값을 변경할 수 없다.
interface Point {
readonly x: number;
readonly y: number;
}
let p1: Point = { x: 10, y: 20 };
p1.x = 5; // 오류 발생
any
와 unknown
any: 모든 타입의 값을 가질 수 있으며, 타입 검사가 무력화된다. 유연하지만 타입 안정성을 보장하지 않는다.
let obj: any = { x: 0 };
obj.foo(); // 런타임 오류 발생 가능
unknown: 모든 타입을 받을 수 있지만, 실제 사용 시에는 타입 검사를 필요로 한다. any
보다 안전하다.
let maybe: unknown = 10;
if (typeof maybe === 'number') {
let num: number = maybe; // 타입 검사 후 사용 가능
}
Union 타입은 두 개 이상의 타입을 가질 수 있는 값을 나타낸다. 파이프(|
) 연산자를 사용하여 선언한다.
let id: number | string;
id = 10; // number 타입 허용
id = "hello"; // string 타입 허용
Union 타입은 다양한 타입의 값을 하나의 변수에 저장할 수 있도록 하여 코드의 유연성을 높여준다.
이번 학습을 통해 TypeScript의 변수와 타입 시스템에 대해 깊이 이해할 수 있었다. 특히, any
와 unknown
의 차이점 및 const
와 readonly
의 사용 사례를 명확히 알게 되어 앞으로 코드 작성 시 큰 도움이 될 것이다. 앞으로 프로젝트에서 이 개념들을 적용하여 더욱 견고하고 안전한 코드를 작성할 계획이다.