본문 바로가기
FrontEnd/TypeScript

Class static / 싱글톤 / 상속 / Abstract

by y.j 2022. 10. 9.
728x90

static 사용하기

static키워드는 메모리에 멤버를 항상 상주하게 해주는 키워드이다. 그래서 클래스로 초기화하지 않아도 바로 사용할 수 있으며 모든 객체들이 같은 멤버(함수) 를 참조하게 된다.

class Person {
    private static CITY = "Seoul";
    public static hello() {
        console.log("안녕하세요", Person.CITY);
    }
}

const p1 = new Person();

Person.hello();       

 

Singleton Pattern구현하기

싱글톤패턴은 같은 객체를 사용하기 위해 필요한 객체이다.
자세한 부분 -

class ClassName {
    private static _INSTANCE: ClassName | null = null;
    private constructor() {};

    public static getInstance() {
        if(ClassName._INSTANCE === null) {
            ClassName._INSTANCE = new ClassName();
        }
        return this._INSTANCE;
    }
}


const a = ClassName.getInstance();
const b = ClassName.getInstance();     // a와 b는 같다.

 

상속

부모의 멤버를 사용하기 위해서는 super키워드를 통해 자신의 부모까지 초기화 한 후 부모의 함수를 옳게 사용 할 수 있다.

class Parent {
    constructor(protected _name: string, private _age: number) {}

    public print(): void {
        console.log(`이름은 ${this._name}`);
    }

    protected printHello(): void {
        console.log(this._name);
    }
}

class Child extends Parent {
    constructor(protected _name: string,  _age: number) {
        super(_name, _age);
        this.printHello();
    }
}

 

Abstract Classes

완전하지 않은 클래스를 정의한 후 자식 클래스에서 재정의해 사용한다.

  • class앞에 abstract라는 키워드를 붙여주어야 한다.
  • function앞에 abstract 키워드를 붙여주어 Overriding해야함을 명시한다.
abstract class AbstractPerson {
    protected _name: string = 'Mark';

    abstract setName(name: string): void;

}

class Person extends AbstractPerson {
    setName(name: string): void {
        this._name = name;
    }
}
728x90

'FrontEnd > TypeScript' 카테고리의 다른 글

Generics  (0) 2022.10.10
Class 정의 / 초기화 / Getter And Setter  (0) 2022.10.08
Interface  (0) 2022.10.07
TypeScript 컴파일러  (0) 2022.09.28
TypeScript 타입호환성  (0) 2022.09.27

댓글