TS에서 class문법은 JS에 타입 추가하는 것과는 조금 다르게 타입을 추가 해줘야 한다.
class 내부에는 모든 자식 object가 사용가능한 속성을 만들어 줄 수있다.
class Number{
data = 0
}
let kim = new Number();
let park = new Number();
console.log(kim.data);
console.log(park.data);
.data
를 통해 0이라는 값을 사용할 수 있게된다.ES6 신문법에서 class는 constructor
함수를 사용해서 class를 만들어준다.
class Person {
constructor (a){
this.name = a;
this.age = 20;
}
}
JS에서처럼 TS에서 class를 만들어주면 에러 메세지가 나온다. 그래서 사용하고싶은 this.
에 관해서 필드값 지정을 통해 미리 타입을 지정 해줘야 한다.
class Person {
name: string;
age: number;
constructor (a: string){
this.name = a;
this.age = 20;
}
}
임의로 숫자와 문자열 값이 들어오면 타입에 맞춰 나눠주는 클래스를 만든다.
class Word{
// 필드값을 먼저 지정 해준다.
num;
str;
// 들어오는 파라미터에 ...을 붙여 전달된 인수들을 배열로 전달 받는다.
constructor(...param : (number | string)[] ){
let numbers :number[] = [];
let strings :string[] = [];
// forEach함수를 이용해 param배열을 전부 확인하고 각 타입에 맞는 배열에 넣어준다.
param.forEach((i)=>{
if (typeof i ==='string') {
numbers.push(i)
} else {
strings.push(i)
}
})
// 각 타입에 맞게 넣어진 변수를 this.num과 this.str에 넣어준다.
this.num = numbers;
this.str = strings;
}
}