👶 TypeScript

다형성

2023. 1. 16. 14:00
목차
  1. 다형성
반응형

다형성

함수와 타입처럼, 클래스와 인터페이스도 기본값과 상한/하한 설정을 포함한 다양한 제네릭 타입 매개변수 기능을 지원합니다. 

제네릭 타입의 범위는 클래스나 인터페이스 전체가 되게 할 수도 있고 특정 메서드로 한정할 수도 있습니다.

class FirstMap<K, V>{ // ①
    constructor(initialKey: K, initialValue: V){ // ②
        // ...
    }
    get(key: K): V { // ③
        // ...
    }
    set(key: K, value: V){
        // ...
    }
    merge<K1, V1>(map: FirstMap<K1, V1>): FirstMap<K | K1, V | V1>{ // ④
        // ...
    }
    static of<K, V>(k: K, v: V): FirstMap<K, V>{ // ⑤
        // ...
    }
}
  1. class와 함께 제네릭을 선언했으므로 클래스 전체에서 타입을 사용할 수 있습니다. FirstMap의 모든 인스턴스 메서드와 인스턴스 프로퍼티에서 K와 V를 사용할 수 있습니다.
  2. constructor에는 제네릭 타입을 선언할 수 없습니다. constructor 대신 class 선언에 사용해야 합니다.
  3. 클래스로 한정된 제네릭 타입은 클래스 내부의 어디에서나 사용할 수 있습니다.
  4. 인스턴스 메서드는 클래스 수준 제네릭을 사용할 수 있으며 자신만의 제네릭도 추가로 선언할 수 있습니다. .merge는 클래스 수준 제네릭은 K와 V에 더해 자신만의 제네릭 타입인 K1과 V1을 추가로 선언했습니다.
  5. 정적 메서드는 클래스의 인스턴스 변수에 값 수준에서 접근할 수 없듯이 클래스 수준의 제네릭을 사용할 수 없습니다. 따라서 of는 1에서 선언한 K와 V에 접근할 수 없고 자신만의 K와 V를 직접 선언했습니다.

인터페이스에도 제네릭을 사용할 수 있습니다.

interface FirstMap<K, V>{
    get(key: K): V
    set(key: K, value: V): void
}

함수와 마찬가지로 제네릭에 구체 타입을 명시하거나 TypeScript가 타입으로 추론하도록 할 수 있습니다.

let a = new FirstMap<string, number>('k', 1) // FirstMap<string, number>
let b = new FirstMap('k', true) // FirstMap<string, boolean>

a.get('k')
b.set('k', false)
반응형

'👶 TypeScript' 카테고리의 다른 글

데코레이터(decorator)  (0) 2023.01.16
믹스인(mixin)  (0) 2023.01.16
클래스는 값과 타입을 모두 선언한다  (0) 2023.01.16
클래스는 구조 기반 타입을 지원한다  (0) 2023.01.16
인터페이스 구현 VS 추상 클래스 상속  (0) 2023.01.15
  1. 다형성
'👶 TypeScript' 카테고리의 다른 글
  • 데코레이터(decorator)
  • 믹스인(mixin)
  • 클래스는 값과 타입을 모두 선언한다
  • 클래스는 구조 기반 타입을 지원한다
개발자 린다씨
개발자 린다씨
개발자 린다씨
개발자 린다씨
Cozy_Linda
개발자 린다씨
전체
오늘
어제
  • 분류 전체보기 (220)
    • 🧠 LLM 엔지니어링 (16)
    • 🐣 일하면서 공부하기 (26)
    • 👶 TypeScript (101)
    • 😎 STS3 Spring 쇼핑몰 (68)
      • STS3 Spring 환경 설정 👀 (5)
    • 🥴 SQLD (5)
    • 🍀 Tistory 팁 (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

최근 댓글

최근 글

hELLO · Designed By 정상우.
개발자 린다씨
다형성
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.