컴파일된 js를 확인해보면 enum은 함수로 변환되어 있음. js에선 enum을 지원하지 않기 때문
값을 설정해주지 않을 경우 기본값은 인덱스값으로 출력됨
enum enum1{
H = "H",
}
enum enum2{
H,
}
const category1: enum1 = enum1.H; // H
const category2: enum2 = enum2.H; // 0
const category3: "H" | "K" | "E" = "H" // 일회용
return 값의 타입을 지정할 수 있음
void: return 값이 없음
never: 항상 오류를 출력하거나 리턴 값을 절대로 내보내지 않음을 의미
function add(a: number, b: number): string{
return String(a + b);
}
function add(a: number, b: number): void{
console.log("Hello world")
return; // void일 경우 return 후 바로 세미콜론
}
변수에 담은 후 사용(일회용이 아닌 다회성 사용에 용이)
호출 시그니처
- 함수의 타입을 지정
- 함수에 함수를 인수로 전달하거나, 함수를 반환하는 경우 이 문법을 통해 인수나 반환 함수의 타입을 지정
const multiple1: (a: number, b: number) => () => number = (a: number, b: number): () => number => {
return () => {
return a * b * 2;
}
}
type subMultiFunc = () => number; // 호출 시그니처
type mainMultiFunc = (a: number, b: number) => subMultiFunc;
const multiple3: mainMultiFunc = (a: number, b: number): subMultiFunc => {
return () => {
return a * b * 2;
}
}
throw에 에러코드를 입력
function sendError(): never{
throw{ errorCode: 500, message: "internal server error"}
}
값 자체가 없지만 나중엔 해당 변수에 number 타입을 삽입할 수 있음
null과의 차이점: null은 빈 값을 의미하고 undefined는 값 자체가 없는 것을 의미
let a: number | undefined = undefined