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)
타입스크립트에세 하나의 객체 형태를 알려주는 틀이라고 생각하면 쉬울 것이다.
예를 들어, 게임 플레이어에 대한 객체
형태 인터페이스를 아래와 같이 정의할 수 있다.
type Player = {
nickname: string,
healthBar: number
}
const myPlayer: Player = {
nickname: "zl존궁Soo",
healthBar: 100,
}
인터페이스와 타입의 차이점
인터페이스는 오직 객체 인스턴스 형태의 타입 정의에만 사용되지만, 타입은 객체 뿐 아니라, 모든 형태의 타입 정의에 사용된다. 즉, type 키워드는 보다 더 다양한 목적으로 사용될 수 있다.