객체와 클래스

omnigi·2022년 2월 4일
0

Typescript Do it

목록 보기
3/23

클래스 선언문

타입스크립트는 C++이나 자바와 같은 객체지향 언어에서 흔히 볼 수 있는 class, private, public, protected, implements, extend와 같은 키워드를 제공합니다. 문법적인 차이만 약간 있을뿐 사실상 그 의미는 다른 언어와 같습니다.

class 클래스 이름 {
	속성 이름[?]: 속성 타입
}

다음 코드는 name과 age라는 속성을 가진 클래스를 선언합니다.

class Person1 {
	name: string
    age?: number
}

다음 코드는 Person1 클래스에 new연산자를 적용해 jack1이라는 이름의 Person1 타입 변수를 만듭니다. jack1은 name과 age 속성을 가지는 타입이므로 아래와 같은 코드를 작성 할 수 있습니다.

class Person1 {
	name: string
    age?: number
}

let jack1 : Person1 = new Person1()
jack1.name = "jack";
jack1.age = 22;
console.log(jack1)

접근 제한자

클래스의 속성은 public, private, protect와 같은 접근 제한자를 이름앞에 붙일 수 있습니다. 만일 생략하면 모두 public으로 간주합니다.

생성자

타입스크립트 클래스는 construct라는 이름의 특별한 메서드를 포함하는데 이를 생성자 라고 합니다.

class Person2{
	constructor(public name:string, public age?: number){}
}
let jack1 : Person1 = new Person1()
jack1.name = "jack";
jack1.age = 22;
console.log(jack1)

클래스에서 인터페이스 구현

클래스가 인터페이스를 구현할 때는 implements 키워드를 사용합니다.

class 클래스이름 implements 인터페이스이름{
	...
}
class Person4 implements IPerson4{
	name: string
    age: number
}

추상클래스

abstract키워드를 class 키워드 앞에 붙여서 만듭니다.
추상클래스는 자신의 속성이나 메서드 앞에 abstract를 붙여 나를 상속하는 다른 클래스에서 이 속성이나 메서드를 구현하게 합니다.

abstract class 클래스 이름 {
	abstract 속성이름: 속성타입
    abstract 메서드 이름(){}
}

abstract class AbstractPerson5{
	abstract name: string
    constructor(public age?: number){}
}

클래스의 상속

extends 키워드를 사용해 상속 클래스를 만듭니다

class 상속클래스 extends 부모클래스 {...}

타입스크립트에서는 부모클래스의 생성자를 super키워드로 호출할 수 있습니다.

class Person5 extends AbstractPerson5{
	constructor(public name: string, age?:number){
    	super(age)
    }
}
let jack5 : Person5 = new Person5('Jack', 22)
console.log(jack5)

static 속성

정적인 속성을 선언할 수 있다.

class 클래스 명 {
	static 정적속성 이름: 속성타입
}

클래스의 정적 속성은 "클래스 이름.정적 속성 이름"형태의 점 표기법을 사용해 값을 얻거나 설정합니다.

class A {
	static initValue = 1
}

let initVal = A.initValue // 1

0개의 댓글