타입스크립트는 다른 객체지향언어에서 있는 클래스를 가지고있다.
클래스의 선언방식은 다음과같다.
class
class_name
{
access modifier
key
:type
}
이런식으로 선언한다.
다른 클래스의 선언방법과 많이 다르지 않다
접근지정자는 설정해줄수 있으나 따로 설정하지 않으면 public이다.
클래스를 생성하는 예시를 보자
class Person2{
constructor(public name:string,public age?:number) { }
}
let jack : Person2 = new Person2('Jack',29)
console.log(jack)
실행결과
Person2 { name: 'Jack', age: 29 }
다른 언어의 클래스 선언과 별로 다르지않은 모습을 볼 수 있다.
생성자의 경우 C++혹은 자바와같은 언어와는 다른모습이지만
자바스크립트일때는 두방법 다 사용가능한걸로 알고있다.
쨋든 저런방법도 가능하다
타입스크립트에서의 생성자는 생성자에서 클래스를 선언할 수 있다.
그러니 클래스를 따로 선언하고 생성자를 선언한후 객체를 생성하는것이 아닌
클래스의선언과 객체의생성을 한번에 할 수 있다는것이다.
다음과같은 방식으로 구현한다.
class
class_name
implementsinterface_name
{
}
예제로 정확히 보자
interface IPerson4{
name: string,
age: number,
}
class Person4 implements IPerson4{
name: string
age: number
}
이런식으로 구현할 수 있다.
abstract를 이용해서 추상클래스를 만들 수 있다.
abstract class
class_name
{
abstractkey
:type
abstractmethod_name
( ) { }
}
abstract class IPerson5{
abstract name:string
constructor(public age?: number) { }
}
class Person5 extends IPerson5{
constructor(public name: string, age?: number){
super(age)
}
}
let jack5 : Person5 = new Person5('jack',43)
console.log(jack5)
이런식으로 상속을 한다.
위에 추상클래스와 묶어서 사용하는것을 볼 수 있다.
그리고 부모클래스의 생성자는 super로 불러올 수 있다.
실행결과
Person5 { age: 43, name: 'jack' }
이런식으로 나온다.