본문 바로가기
강의 실습/한 입 크기로 잘라먹는 타입스크립트(TypeScript)

제네릭 클래스

by Jint 2024. 12. 1.

한 입 크기로 잘라먹는 타입스크립트 - 제네릭 클래스


1. 제네릭 클래스
일반 클래스를 생성하여 생성자와 메서드를 등록한 후 실행해본다.

- chapter4.ts

/**
 * 제네릭 클래스
 */
// 일반 클래스 예제
class NumberList {

    // 생성자
    constructor(private list: number[]) {}

    // 메서드
    push(data: number) {
        this.list.push(data);
    }
    pop() {
        return this.list.pop();
    }
    print() {
        console.log(this.list);
    }

}

// 인스턴스 생성
const numberList = new NumberList([1, 2, 3]);
numberList.pop();
numberList.push(4);
numberList.print();


- Terminal

tsx src/chapter4.ts
    [ 1, 2, 4 ]


메서드들이 잘 실행됨을 알 수 있다.
만약 StringList 클래스도 필요하다고 가정하고 만들려면, 새롭게 클래스를 생성하여 중복된 클래스를 하나 더 생성해야 한다.
이 때 제네릭 클래스를 사용하면 중복으로 클래스를 생성하지 않아도 된다.

- chapter4.ts

...
// 제네릭 클래스 예제
class List<T> {

    // 생성자
    constructor(private list: T[]) {}

    // 메서드
    push(data: T) {
        this.list.push(data);
    }
    pop() {
        return this.list.pop();
    }
    print() {
        console.log(this.list);
    }

}

// 인스턴스 생성
// const numberList2 = new List<number>([1, 2, 3]); // 반드시 타입을 명시해주지 않아도 됨
const numberList2 = new List([1, 2, 3]);
numberList2.pop();
numberList2.push(4);
numberList2.print();

const stringList = new List(['1', '2']);
stringList.push('hello');


제네릭 클래스는 제네릭 인터페이스, 제네릭 타입변수와는 다르게, 클래스의 생성자를 호출할 때 생성자의 인수로 전달하는 값을 기준으로 타입 변수의 타입을 추론한다.
따라서 const numberList2 = new List<number>([1, 2, 3]); 처럼 반드시 타입을 명시해주지 않아도 된다.


참고링크 : https://www.inflearn.com/course/%ED%95%9C%EC%9E%85-%ED%81%AC%EA%B8%B0-%ED%83%80%EC%9E%85%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8#

 

한 입 크기로 잘라먹는 타입스크립트(TypeScript) 강의 | 이정환 Winterlood - 인프런

이정환 Winterlood | 문법을 넘어 동작 원리와 개념 이해까지 배워도 배워도 헷갈리는 타입스크립트 이제 제대로 배워보세요! 여러분을 타입스크립트 마법사🧙🏻‍♀️로 만들어드립니다., 프론

www.inflearn.com

댓글