한 입 크기로 잘라먹는 타입스크립트 - 제네릭 클래스
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
'강의 실습 > 한 입 크기로 잘라먹는 타입스크립트(TypeScript)' 카테고리의 다른 글
타입 조작하기 (0) | 2024.12.03 |
---|---|
프로미스와 제네릭 (0) | 2024.12.02 |
제네릭 인터페이스 & 제네릭 타입 별칭 (1) | 2024.11.28 |
map, forEach 메서드 타입 정의하기 (0) | 2024.11.27 |
타입 변수 응용하기 (0) | 2024.11.25 |
댓글