[typescript] class 문법의 타입 지정

sangyong park·2023년 1월 29일
0
post-thumbnail
post-custom-banner

필드값 타입지정

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안에 속성을 만드는 것을 필드라고 한다.

constructor 타입지정

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 타입을 지정 할 필요가 없다.

methods 타입지정

<script>
class Person {
	add(a : number) {
    	console.log(a + 1)
    }
}
</script>

class 내부에 함수를 입력할 수도 있다. 이 함수는 Person이라는 클래스의 prototype에 추가된다. 이러면 모든 Person의 자식들은 add라는 함수를 사용가능하다.

이 때 add라는 함수 타입지정도 일반 함수 타입지정과 마찬가지로 하면 된다.

profile
Dreams don't run away It is always myself who runs away.
post-custom-banner

0개의 댓글