타입스크립트는 객체지향언어에서 흔히 볼 수 있는 class, private, publicm protected, implements, extend와 같은 키워드를 제공한다.
선언문의 기본 형태는 다음과 같다.
class Person{
name: string
age?: number
}
let jack : Person = new Person()
클래스의 속성은 private, protected, public과 같은 접근 제한자를 이름 앞에 붙일 수 있다.
생략한다면 모두 public으로 간주한다.
타입스크립트 클래스는 constructor라는 이름의 특별한 메서드를 포함하는데 이를 생성자라고 한다.
다른 언어와 다르게 타입스크립트 클래스는 속성을 선언할 수 있다.
앞의 Person클래스는 다음과 같이 표기 가능하다.
class Person2{
constructor(public name:string, public age?: number) {}
}
타입스크립트 생성자의 매개변수에 public과 같은 접근 제한자를 붙이면 해당 매개변수의 이름을 가진 속성이 클래스에 선언된 것처럼 동작한다. 즉, 바로 위의 person2클래스는 다시 말하면 아래와 person3 클래스를 함축한 것이다.
class Person3{
name: string
age?: number
constructor(public name:string, public age?: number) {
this.name = name; this.age = age
}
}
다른 객체지향 언어와 마찬가지로 타입스크립트 클래스는 인터페이스를 구현할 수 있다.
클래스가 인터페이스를 구현할 때는 implements키워드를 사용한다.
interface IPerson4{
name: string
age?: number
}
class Person4 implements IPerson4{
constructor(public name:string, public age?: number) {}
}
타입스크립트는 다른 언어처럼 abstract 키워드를 사용해 추상 클래스를 만들 수 있다.
추상클래스는 자신의 속성이나 메서드 앞에 abstract를 붙여 나를 상속하는 다른 클래스에서 이 속성이나 메서드를 구현하게 한다.
타입스크립트에서 extends 키워드를 사용해 상속 클래스를 만든다.
타입스크립트도 정적인 속성을 가질 수 있다.
클래스의 정적 속성은 클래스 이름.정적 속성이름 형태의 점 표기법을 사용해 값을 얻거나 설정한다.
class A{
static initValue = 1
}
let initVal = A.initValue // 1