Typescript 로 객체지향코드 작성하기

BinaryWoo_dev·2023년 4월 10일
0

typescript

목록 보기
1/1

keywords


abstract 상속할 수 있는 추상 클래스 또는 추상 메서드 선언 키워드이며, 직접적으로 인스턴스를 생성할 수는 없다. 추상 클래스를 상속받는 자식 클래스에서는 추상 메소드를 반드시 구현해야한다.

protect : 필드가 외부로부터는 보호되지만 다른 자식 클래스에서는 사용되기를 원할 경우
private : 필드가 외부로부터 보호되고, 다른 자식 클래스에서도 사용 못하기를 원할 경우
public : 필드가 외부로부터 보호되지 않고, 다른 자식 클래스에서도 사용되기를 원할 경우

public으로 선언하되, 사용자가 임의로 값을 수정하지 못하게 하기

	class Word {
    	constructor {
        	public term: string,
          	public def: string
        }
    }

위에 코드는 단어사전 클래스를 만들기 위한 '단어' 클래스이다. 여기서, 사용자에게 Word 클래스의 term, def 변수에 대한 값은 확인할 수 있지만, 직접 수정하지는 못하게 하고 싶을 경우에는 아래와 같이 readonly 라는 property를 사용하면 된다.

	class Word {
    	constructor {
        	public readonly term: string,
          	public readonly def: string
        }
    }

이렇게 설정하면, 사용자는 아래와 같이 def 라는 변수를 Word 인스턴스 내에서 수정하려고 할 때 에러가 발생할 것이다.

const americano = new Word("americano", "대표적인 커피 메뉴");

americano.def = "한국인이 좋아하는 메뉴" // -> TypeError : Cannot assign to 'def' because it is a read-only property. (2540)

인터페이스(Interface)


타입스크립트에세 하나의 객체 형태를 알려주는 틀이라고 생각하면 쉬울 것이다.
예를 들어, 게임 플레이어에 대한 객체 형태 인터페이스를 아래와 같이 정의할 수 있다.

type Player = {
	nickname: string,
  	healthBar: number
}

const myPlayer: Player = {
	nickname: "zl존궁Soo",
  	healthBar: 100,
}

인터페이스와 타입의 차이점

인터페이스는 오직 객체 인스턴스 형태의 타입 정의에만 사용되지만, 타입은 객체 뿐 아니라, 모든 형태의 타입 정의에 사용된다. 즉, type 키워드는 보다 더 다양한 목적으로 사용될 수 있다.

profile
매일 0.1%씩 성장하는 Junior Web Front-end Developer 💻🔥

0개의 댓글