반응형
제네릭 인터페이스
제네릭 인터페이스 작성은 일반 인터페이스의 작성과 크게 다르지 않습니다.
유일한 차이점은 인터페이스 이름 뒤에 적어주는 타입 매개변수입니다. 위 예에서 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가 됩니다.
반응형
'웹개발 > TypeScript' 카테고리의 다른 글
타입스크립트 | 타입 선언 파일(d.ts) 이란? 설치와 찾는법 (0) | 2022.08.24 |
---|---|
타입스크립트 | 제네릭 제약 (Generic Constraints) (0) | 2022.08.22 |
타입스크립트 | 제네릭 함수 (0) | 2022.08.17 |
타입스크립트 | 제네릭, 타입매개변수, Array<T> (0) | 2022.08.15 |
타입스크립트 | 모듈 Default Export 란, 사용해야 할까? (0) | 2022.08.13 |
최근댓글