class 내부에는 모든 자식 object들이 사용가능한 속성들을 만들 수 있다.
예를 들어 모든 Person 클래스의 자식들에게 data라는 속성을 부여해주고 싶다면
class Person{
data = 0;
}
let john = new Person();
let kim = new Person();
console.log(john.data);
console.log(kim.data);
이렇게 class 중괄호 안에다가 변수처럼 쓰면 된다.
그럼 john, kim 둘다 0이 할당되게 된다.
class Person{
name;
age;
constructor(){
this.name = 'kim';
this.age = 20;
}
}
필드값으로 먼저 name,age가 미리 정의되어야 constructor 안에서도 사용이 가능하다.
constructor 함수에 변수를 집어 넣을수 있는데
class Person{
name;
age;
constructor (a: string){
this.name = a;
this.age = 20;
}
}
이렇게 넣는다.
타입지정을 따로 안하는 방법이 있는데
class Person{
name;
age;
constructor (a: 'kim'){
this.name = a;
this.age = 20;
}
}
이렇게 바로 박아버리는 것이다.
이럼 굳이 타입지정을 하지 않아도 된다.
참고로 constructor 함수는 return 타입지정을 하면 안된다.
constructor에 의해서 항상 object자료가 생산되기 때문이다.
class Person{
name;
age;
constructor (a: string){
this.name = a;
this.age = 20;
}
//프로토타입 함수 넣는 곳
함수(a: string){
console.log('안녕'+a)
}
}
let 사람1 = new Person('kim');
사람1.함수('안녕')
이렇게 되면 모든 자식들이 함수()를 가져다가 쓸 수 있다.
위의 출력결과는 안녕안녕이 될 것이다.
prototype은 constructor와 다르게
파라미터 & return 타입지정을 자유롭게 할 수 있다.