본문 바로가기

프론트엔드(Front-End)/TypeScript

[TypeScript] 타입스크립트의 타입 선언 : Class

타입스크립트와 Class 타입

타입스크립트에서는 클래스의 프로퍼티에도 타입을 지정할 수 있습니다.

 

// 클래스의 타입 선언
class MyClass {
  name: string = "";
  age: number = 0;
  constructor(name: string, age: number) {
    this.name = name;
    this.age = age;
  }
}

 

 

public, private, protected, static

타입스크립트는 자바(Java) 처럼 접근 제한자를 사용할 수 있습니다.
그런데, 타입스크립트의 접근 제한자는 자바의 접근제한자와 완전히 똑같지는 않은 것 같습니다.
그냥 자바스크립트는 접근제한자가 없으니, 변수의 사용 범위를 조금 더 제한해주는, const 의 상위 호환 버전 같은 느낌인거 같습니다.

타입스크립트의 접근제한자들은 아래와 같이 사용할 수 있습니다.

 

// public, private, static, protected
// public : 클래스 속성의 default 상태, 어디서든 수정 가능
// ex) 클래스 내외부, 클래스 인스턴스 등
// public의 진가는 constructor와 함께!
class PublicClass1 {
  constructor(public age: number) {
    // PublicClass1의 프로퍼티 age를 추가했다는 뜻
  }
}

// private : 클래스 선언 당시에만 사용 가능
class PrivateClass2 {
  private name: string = "";
}
// protected : 클래스 선언 당시, 클래스 내부, 자식 클래스 등에서 참조 가능
class Parent {
  protected familyName: string;
}

class Child extends Parent {
  constructor(x: string) {
    super();
    this.familyName = "hey"; // ok
  }
}

// static, 바로 접근 기능
class StaticClass {
    static someValue: string = "";
}
 

제네릭(Generic)

타입스크립트도 동적 타입 할당을 위한 제네릭을 제공합니다.

타입스크립트의 제네릭도 타입으로 사용할 수 있으며, 타입의 결정은 변수를 선언하고 타입을 지정할 때에 정합니다.

제네릭의 사용은 아래와 같이 사용할 수 있습니다.

// 클래스와 제네릭
class NewClass<T> {
  name: T;
  constructor(name: T) {
    this.name = name;
  }
}

let myClass1: NewClass<number> = new NewClass(13);