제네릭 클래스
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(); 
위의 코드 제네릭 클래스로 바꾸기
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 numberList1 = new List([1,2,3]);
numberList.pop();
numberList.push(4);
numberList.print(); 
const stringList1 = new List(["1","2"]);
stringList1.push("hello")
const stringList2 = new List<string>(["1","2"]);