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