[TS] 객체와 클래스

로움·2022년 5월 19일
0

타입스크립트

목록 보기
3/14

클래스 선언문

타입스크립트는 객체지향언어에서 흔히 볼 수 있는 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 키워드를 사용해 상속 클래스를 만든다.

Static 속성

타입스크립트도 정적인 속성을 가질 수 있다.
클래스의 정적 속성은 클래스 이름.정적 속성이름 형태의 점 표기법을 사용해 값을 얻거나 설정한다.

class A{
	static initValue = 1
 }
 
 let initVal = A.initValue // 1
profile
FrontEnd 외길인생

0개의 댓글