[TS] Class Type

Chanki Hong·2023년 4월 3일
0

TypeScript

목록 보기
8/9
post-thumbnail

Class

  • TS에서는 필드값으로 미리 지정해야 constructor 함수 내에서 사용 가능.
  • 또한 constructor 함수의 리턴값은 타입지정 하지 않음.
  • class는 항상 object를 리턴 하기 때문.
  • 메소드(methods)는 fuction type 지정과 동일.
class Person {
  name: string;
  constructor(a: string) {
    this.name = a;
  }
  함수(a: string) {
    console.log('안녕' + a);
  }
}

예제1

  1. Car 클래스.
  2. { model : '소나타', price : 3000 } 이렇게 생긴 object를 복사해주는 class.
  3. 그리고 복사된 object 자료들은 .tax() 라는 함수를 사용가능한데 현재 object에 저장된 price의 10분의1을 출력.
  4. model과 price 속성의 타입과 tax() 함수의 return 타입설정.
class Car {
  model: string;
  price: number;
  constructor(a: string, b: number) {
    this.model = a;
    this.price = b;
  }
  tax(): number {
    return this.price / 10;
  }
}
let car1 = new Car('소나타', 3000);
console.log(car1); // { model : '소나타', price : 3000 }
console.log(car1.tax()); // 300

예제2

  1. class인데 파라미터가 잔뜩 들어가는 class Word.
  2. object 만들 때 new Word() 소괄호 안에 숫자 혹은 문자를 입력하면 숫자는 전부 object 안의 num 속성 안에 array 형태로 저장되고 문자는 전부 object 안의 str 속성 안에 array 형태로 저장되는 class.
  3. class 만들 때 넣을 수 있는 숫자와 문자 갯수는 일단 제한은 없음.
class Word {
  num: number[];
  str: string[];
  constructor(...params: (number | string)[]) {
    let numbers: number[] = [];
    let strs: string[] = [];

    params.forEach((v: number | string) => {
      typeof v === 'number' && numbers.push(v);
      typeof v === 'string' && strs.push(v);
    });

    this.num = numbers;
    this.str = strs;
  }
}
let obj = new Word('kim', 3, 5, 'park');
console.log(obj.num); // [3,5]
console.log(obj.str); // ['kim', 'park']

0개의 댓글