TypeScript 시작하기 (10) - class 만들 때 타입지정 가능

funfungun·2025년 1월 10일
0

TypeScript 시작하기

목록 보기
10/18
post-thumbnail

지난 시간에는 타입스크립트로 HTML 변경과 조작할 때 주의점에 대해 알아보았습니다. 오늘은 class 만들 때 타입을 지정하는 법을 알아보겠습니다.


  1. class 필드에도 타입 지정이 가능합니다.
    class Person {
      data: number = 0;
    }

  1. TypeScript constructor 는 필드값이 미리 선언되어 있어야합니다.
    class Person {
      name: string; // 미리 선언
      constructor() {
        this.name = "kim";
      }
    }

  1. constructor 의 파라미터에도 타입 지정이 가능합니다. 다만, constructor 에서는 복제되는게 항상 object 이기 때문에 return 타입을 지정할 이유는 딱히 없습니다.
    class Person {
      name: string;
      constructor(data: string) {
        this.name = data;
      }
    }

  1. prototype 함수 역시 타입 지정이 가능합니다.

    class Person {
      name: string;
      constructor(data: string) {
        this.name = data;
      }
    
      practice(a: string) {
        console.log(a);
      }
    }

  1. 연습으로 Car 클래스를 만들어봅시다.
    a. { model : '소나타', price : 3000 } 이렇게 생긴 object 를 복사해주는 class 를 만들어봅시다.
    b. 복사된 object 자료들은 .tax() 라는 함수를 사용가능한데, 현재 object 에 저장된 price 의 10분의 1을 출력해주어야 합니다.

    class Car {
      model: string;
      price: number;
      constructor(x: string, y: number) {
        (this.model = x), (this.price = y);
      }
    
      tax(): number {
        return this.price * 0.1;
      }
    }

  1. 이번에는 class 인데, 파라미터가 잔뜩 들어가는 class Word 를 만들어봅시다.
    a. object 만들 때 new Word() 를 사용합니다. 소괄호 안에 숫자 혹은 문자를 입력합니다.
    b. 숫자는 전부 object 안의 num 속성 안에 array 형태로 저장됩니다.
    c. 문자는 전부 object 안의 str 속성 안에 array 형태로 저장되는 class 를 만들어봅시다.

    class Word {
      num: number[];
      str: string[];
    
      constructor(...param: (string | number)[]) {
        let letters: string[] = [];
        let numbers: number[] = [];
    
        param.forEach((i) => {
          if (typeof i === "string") {
            letters.push(i);
          } else {
            numbers.push(i);
          }
        });
    
        this.num = numbers;
        this.str = letters;
      }
    }

지금까지 class 를 만들 때 타입을 지정하는 방법을 알아보았습니다. 다음 시간에는 Object 에 타입을 지정하는데 사용할 수 있는 interface 에 대해 알아보겠습니다.

profile
Commercial Art

0개의 댓글