타입스크립트 클래스의 기능 대부분은 C#에서 빌려왔다.
지원하는 기능을 아래와 같다
컴파일하면 일반적인 자바스크립트가 된다.
→ 믹스인같은 자바스크립트 표현식도 타입 안정성을 유지하며 사용 가능하다.
타입스크립트의 고유기능은 컼ㅁ파일 타임에만 존재하고, 컴파일할때는 아무 코드도 생서하지 않는다.
public
protected
private
— 접근 한정자를 사용하여 내부 구현 정보를 많이 공개하지 않는다.
→ 잘 정의 된 API만 노출하도록 클래스를 설계 할 수 있다.
abstract class Piece {
protected position: Position;
constructor(private color: ColorType, file: FileType, rank: RankType) {
this.position = new Position(file, rank);
}
/**
* 기본 구현을 포함한다
* -> 서브클래스에서 오버라이드 할 수 있다.
* -> 접근 한정자가 없어서 public이다.
*/
moveTo(position: Position) {
this.position = position;
}
/**
* 주어진 시그니처와 호환되게 구현해야한다.
* -> 하위클래스에 이 사실을 알린다.
* -> 구현하지 않으면 컴파일 타임에 타입에러가 발생한다.
* => 즉, 추상클래스 구현시에는 추상 메서드도 반드시 구현해야한다.
*/
abstract canMoveTo(position: Position): boolean;
}