rhanziy

TS - class의 타입지정 본문

Html_css_js

TS - class의 타입지정

rhanziy 2023. 1. 27. 17:05

 

object 뽑는 기계 class에도 타입을 지정해줄 수 있다.

ES6 신문법에서는 constructor함수를 쓰면 되는데, this.어쩌구를 쓰고 싶으면

미리 어쩌구를 필드값으로 지정해 줘야함.

 

class CarInfo {
    model : string;
    price : number;
    constructor(a:string, b:number){
        this.model = a,
        this.price = b
    }
    tax() :number{
        return this.price * 0.1;
    }
}

let car = new CarInfo('소나타', 3000);
console.log(car);     // { model : '소나타', price : 3000 }
console.log(car.tax());    // 300

필드값으로 model, price의 타입을 미리 정의해둬야 constructor안에서도 사용이 가능하다.

constructor함수엔 파라미터도 집어 넣을 수 있잖아요!? 똑같이 타입을 지정해주면 된다.

default parameter로 쓰려면  a = '소나타' 이렇게 해주기.

constructor에 의해 항상 object자료가 생산되기때문에 return타입은 지정해줄 필요가 없다.

 

tax()를 보면, CarInfo라는 클래스의 prototype 함수인데 모든 CarInfo클래스를 사용한 자식이면

tax()함수를 쓸 수 있는 것. 했던 것 처럼 함수 타입 지정 해주면 됨.

 

class Word{
    num;
    str;
    constructor(...param){
        let 숫자들 :number[] = [];
        let 문자들 :string[] = [];

        param.forEach((e)=>{
            if(typeof e === 'string'){
                문자들.push(e);
            } else {
                숫자들.push(e);
            }
        })
        
        this.num = 숫자들,
        this.str = 문자들
    }
}

let objj = new Word('kim', 3, 5, 'park');
console.log(objj.num);   // [ 3, 5 ]
console.log(objj.str);  // [ 'kim', 'park' ]

 

constructor에는 rest parameter도 들어올 수 있어요. ...param <<

Word클래스 생성 후 입력값에 따라 문자는 문자대로, 숫자는 숫자대로 구분해주는 obj생성.

내부에서 타입 지정 후 forEach함수로 문자, 숫자 구분해서 push해주기.

Comments