6/25 TIL

이세영·2024년 6월 25일
1

오늘은 TypeScript에서 변수와 타입에 대해 배웠다. TypeScript는 JavaScript에 타입을 추가한 언어로, 코드의 안정성과 가독성을 높이는 데 큰 도움이 된다. 이번 학습에서는 기본 타입의 종류와 const, readonly, any, unknown, 그리고 union 타입에 대해 중점적으로 다루었다.

1. 기본 타입

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");
    }
  • NullUndefined: 각각 nullundefined 값을 가질 수 있다.

2. constreadonly

  • 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; // 오류 발생

3. anyunknown

  • any: 모든 타입의 값을 가질 수 있으며, 타입 검사가 무력화된다. 유연하지만 타입 안정성을 보장하지 않는다.

    let obj: any = { x: 0 };
    obj.foo();  // 런타임 오류 발생 가능
  • unknown: 모든 타입을 받을 수 있지만, 실제 사용 시에는 타입 검사를 필요로 한다. any보다 안전하다.

    let maybe: unknown = 10;
    if (typeof maybe === 'number') {
      let num: number = maybe;  // 타입 검사 후 사용 가능
    }

4. Union 타입

Union 타입은 두 개 이상의 타입을 가질 수 있는 값을 나타낸다. 파이프(|) 연산자를 사용하여 선언한다.

let id: number | string;
id = 10;  // number 타입 허용
id = "hello";  // string 타입 허용

Union 타입은 다양한 타입의 값을 하나의 변수에 저장할 수 있도록 하여 코드의 유연성을 높여준다.


이번 학습을 통해 TypeScript의 변수와 타입 시스템에 대해 깊이 이해할 수 있었다. 특히, anyunknown의 차이점 및 constreadonly의 사용 사례를 명확히 알게 되어 앞으로 코드 작성 시 큰 도움이 될 것이다. 앞으로 프로젝트에서 이 개념들을 적용하여 더욱 견고하고 안전한 코드를 작성할 계획이다.

profile
블로그 관리 하루에 한번씩 도전!

0개의 댓글