class 내부에는 모든 자식 object들이 사용 가능한 속성을 만들 수 있다.
<script>
class Person {
data = 0;
}
let yong = new Person();
let kim = new Person();
</script>
위 예제를 보면 class 중괄호 안에다가 변수처럼 data = 0을 자식들에게 뿌려줬다.
class안에 변수처럼 선언하지만 var let과 같은 키워드는 사용하지 않는다.
자식요소들은 object 자료형이니 yong.data와 같이 사용이 가능하다.
class안에 속성을 만드는 것을 필드라고 한다.
class는 간단히 말하면 object 복사기계이다.
<script>
class Person {
constructor (){
this.name = 'kim';
this.age = 20;
}
}
</script>
타입스크립트에서는 위 문법과 같이 사용하면 에러를 발생시킨다. 타입스크립트에서 this를 사용시에는 미리 필드값으로 만들어줘야한다.
<script>
class Person {
name;
age;
constructor (){
this.name = 'kim';
this.age = 20;
}
}
</script>
this.name , this.age를 사용하려면 필드 값으로 name, age가 미리 정의되어있어야 constructor 안에서도 사용이 가능하다.
<script>
class Person {
name;
age;
constructor (a){
this.name = a;
this.age = 20;
}
}
</script>
constructor 함수에는 변수를 집어넣을 수 있다. 그러면 이제 new Person('hello')할 때 소괄호안에 들어가는 'hello' 이런 자료가 a라는 파라미터 자리에 들어간다. 생산되는 object마다 각각 다른 이름을 부여하고 싶을 때 유용하다.
constructor 파라미터의 타입지정도 함수와 같이 타입을 지정하면 된다.
<script>
class Person {
name;
age;
constructor ( a :string ){
this.name = a;
this.age = 20;
}
}
</script>
함수 문법중에 default parameter이라는게 있는데 파라미터에 값을 입력하지 않으면 자동으로 할당해주는 것이다.
default parameter를 활용하면 굳이 타입지정을 안해도 상관없다.
<script>
class Person {
name;
age;
constructor ( a = 'kim' ){
this.name = a;
this.age = 20;
}
}
</script>
constructor 함수는 항상 object 자료가 생산되기 때문에 return 타입을 지정 할 필요가 없다.
<script>
class Person {
add(a : number) {
console.log(a + 1)
}
}
</script>
class 내부에 함수를 입력할 수도 있다. 이 함수는 Person이라는 클래스의 prototype에 추가된다. 이러면 모든 Person의 자식들은 add라는 함수를 사용가능하다.
이 때 add라는 함수 타입지정도 일반 함수 타입지정과 마찬가지로 하면 된다.