PSD( Private-Self-Development )

타입스크립트의 열거 타입 과 제네릭 본문

Frontend/Typescript

타입스크립트의 열거 타입 과 제네릭

chjysm 2022. 9. 29. 13:39

열거 타입

숫자 열거형

초기화되지 않은 열거형이 먼저 나오는 경우

enum Weekdays {
	Monday,  //0
	Tuesday,  //1
	Wednesday = 5,  //5 
	Thursday,  //6
	...
}

계산된 맴버: 초기화되지 않은 열거형의 앞에 계산된 맴버는 나오지 못함

function returnNumberFive():number {
	return 5;
}

enum Weekdays {
	Monday = 1,  //1 => 상수 맴버
	Tuesday,  //2 => 상수 맴버
	Wednesday = Monday + Tuesday  //3 => 컴파일 타임에서 3이 할당되는 상수 맴버
	Thursday = returnNumberFive(),  //5 => 런타임에서 값이 할당되는 계산된 맴버
	Friday, //?오류 발생 
	...
}

문자 열거형

모든 맴버를 초기화 해야 함

이종 열거형

열겨타입은 number와 string을 같 이용가능 ⇒ 권장하는 방법은 아님

enum BooleanLikeHeterogeneousEnum {
	No = 0,
	Yes = "YES",
}

제네릭

클래스의 제네릭

제네릭에서 클래스 타입의 static 멤버를 가질수 없음

class staticExample<T> {
	public static staticValue: T;  //Error
	...
}

함수의 제네릭

컴파일러는 height 이라는 프로퍼티를 가지는지 확신 하지 못함

function getHeight<T> (person: T) {
    return person.height;  //Error => 실제로 person이 height를 가지고 있어도
}

대체가능한 코드

interface Heightwise {
    height: number;
}

function getHeight<T extends Heightwise> (person: T) {
    return person.height;
}
const myInfo = {
    name: 'yeongae',
    height: 170,
};

console.log(getHeight(myInfo));// 170

'Frontend > Typescript' 카테고리의 다른 글

타입스크립트 기타 특성  (0) 2022.09.29
타입스크립트 데코레이터  (0) 2022.09.29
타입스크립트의 OOP( 객체 지향 프로그래밍 )  (0) 2022.09.28
타입스크립트의 타입  (0) 2022.09.28
타입스크립트 란?  (0) 2022.09.28