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
- Car 클래스.
- { model : '소나타', price : 3000 } 이렇게 생긴 object를 복사해주는 class.
- 그리고 복사된 object 자료들은 .tax() 라는 함수를 사용가능한데 현재 object에 저장된 price의 10분의1을 출력.
- 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);
console.log(car1.tax());
예제2
- class인데 파라미터가 잔뜩 들어가는 class Word.
- object 만들 때 new Word() 소괄호 안에 숫자 혹은 문자를 입력하면 숫자는 전부 object 안의 num 속성 안에 array 형태로 저장되고 문자는 전부 object 안의 str 속성 안에 array 형태로 저장되는 class.
- 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);
console.log(obj.str);