반응형

제네릭 인터페이스

제네릭 인터페이스 작성은 일반 인터페이스의 작성과 크게 다르지 않습니다.

유일한 차이점은 인터페이스 이름 뒤에 적어주는 타입 매개변수입니다. 위 예에서 Box 인터페이스에는 하나의 타입 매개변수를 가지고 있습니다. 하지만 하나 이상의 타입 매개변수도 가질 수 있습니다.

위 코드 처럼 꺾쇠괄호 안에 <> 쉼표로 구분하여 둘 이상의 매개변수를 지정할 수 있습니다.

인터페이스 내에서 지정한 타입을 사용하려는 모든 곳에서 T를 사용할 수 있습니다. 인터페이스에 T타입을 사용하는 몇 가지 함수를 정의하고 있습니다. 함수 getItem은 T에 의해 지정된 타입의 값을 반환하고 있습니다. 함수 addItem은 T 타입의 매개변수를 사용하고 있습니다. 그리고 getAll은 T 타입의 배열을 반환하고 있습니다.

위 코드에서 제네릭 인터페이스를 타입으로 사용하고 있습니다. 물론 해당 인터페이스를 구현하는 객체의 인스턴스를 할당해야 합니다.


제네릭 클래스

제네릭 클래스 역시 일반 클래스와 유사하게 작성합니다. 마찬가지로 <> 꺾은 괄호 안에 타입 파라매터를 넣어주는 부분이 다른 점입니다.

class FruteBox<T> implements Box<T> {
    private frutes = new Array<T>();

    getItem() {
        return this.frutes[this.frutes.length - 1];
    }

    addItem(item: T) {
        this.frutes.push(item);
    }

    getAll() {
        return this.frutes;
    }   
}

let myBox = new FruteBox<string>();

이 FruteBox 클래스에 하나의 타입 매개변수 T를 지정하였고 Box인터페이스를 구현하도록 설정했습니다. 위 예의 경우 클래스의 새 인스턴스에 제공하는 타입 T는 클래스 내부의 인터페이스 구현에 대해 예상되는 것과 동일한 타입 T가 됩니다.

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기