[ Typescript ] - class 만들 때 타입지정 가능

최문길·2023년 12월 21일
1

Typescript

목록 보기
11/23

필드값 타입 지정

Javascript의 class에서는

class 내부에는 constructor 내부 말고 외부에서도 object들이 사용가능한 속성같은걸 만들 수 있다.

class Person {= 'choi';
}

let john = new Person()
console.log(john)//Person {성: 'choi'}

class 중괄호 안에다가 변수처럼 만들면 되는데.. ( var let 키워드 그런거 안쓰는것이 특징! )

그럼 class Person 으로부터 나온 isntance인 object에는
성='choi' 를 복사해준다.

이렇게 class 내부와 constructor 외부에서 만든 속성을 field 라고 한다.

필드값에 타입 지정은 아래와 같다. 그냥 변수에 타입지정 하듯이..

class Person {: string= 'choid'
}


constructor 타입지정

constructor 안에서 변수의 타입을 지정을 일단 해보자

class Person {
      constructor(){
            this.= 'choi'
      }
}

에러가 뜬다 .


타입이 존재하지 않는다고 하니 일반 변수에 타입 지정하듯이 해보자

class Person {
      constructor(){
            this.: string = 'choi'
      }
}

에러가 난다.

문법에 맞게 쓰지를 않아서 에러가 난다 .

그렇다면 어떻게 하란 말인가..

TypeSCript에서 constructor 타입지정


this.변수의 타입을 정해보자

this.변수를 constructor안에서 사용하고 싶다면 미리 필드값으로 만들어줘야 한다 .

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 내부라고 다른거 아님- 쫄지말자..


Q. 필드값이랑 constructor랑 똑같은 역할이네요? 왜 구분해놓음?

A .
똑같은 기능을 한다.

근데 new Person() 사용할 때 파라미터로 뭔가 집어넣고 싶으면 constructor로 만들어서 사용하자.

class의 메소드 타입 지정

일반 함수 타입 지정과 동일하다.

class Person {
      speak(x?:string):string|void{
            if(typeof x ==='string'){
                  return x
            } 
      }
    }

결론

  • class에서 this.변수를 사용하고 싶으면 field에서 변수를 선언먼저 해주기

  • 메소드의 타입은 일반 함수에 타입정의 하기와 똑같다.

0개의 댓글