TIR: Typescript | 클래스와 인터페이스 (1) 클래스와 상속 - 230116

Lumpen·2023년 1월 17일
0

Typescript

목록 보기
3/17

클래스와 인터페이스

타입스크립트 클래스의 기능 대부분은 C# 에서 빌려왔다
가시성 한정자, 프로퍼티 초기자, 다형성, 데코레이터, 인터페이스 등 지원

프로퍼티 초기자와 데코레이터 기능은 자바스크립트에서도 지원하므로 실제 런타임 코드를 생성한다
나머지는 타입스크립트 고유 기능으로 컴파일 타임에만 존재한다
컴파일 이후 자바스크립트 코드에서는 어떤 코드도 생성되지 않는다

클래스와 상속

체스를 클래스로 구현해본다

class Game {}
class Piece {}
class position {}

class King extends Piece {}
class Queen extends Piece {}
class Bishop extends Piece {}
class Knight extends Piece {}
class Rook extends Piece {}
class Pawn extends Piece {}

type Color = 'Black' | 'White'
type File = 'A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'G' | 'H'
type Rank = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8

class Position {
	constructor(private file: File, private rank: Rank){}
}
class Piece {
  protected position: Position
  constructor(private readonly color: Color, 
               file: File, 
               rank: Rank
              ){ this.position = new Position(file, rank)}
}

class 에서 선언한 프로퍼티에 선언과 함께 값을 할당하지 않았을 경우
생성자 함수에서 할당해주지 않으면 undefined 가 된다
따라서 생성자 함수에서 값을 할당받지 않을 것이라면
T | undefined 로 작성해야 한다

readonly 는 초기에 값을 할당 후 변경 불가
protected 는 자식만 접근 가능한 프로퍼티
private 는 외부에서 접근할 수 없음

strictNullChecks 와 strictPropertyInitialization
을 켜면 클래스 인스턴스 변수를 할당했는지 확인할 수 있지만
strict 를 켜면 다 포함되어 있음

타입스크립트는 세 가지 접근 지정자를 갖는다
public (default) , protected, private

profile
떠돌이 생활을 하는. 실업자는 아니지만, 부랑 생활을 하는

0개의 댓글