Enum
const MAX_NUM = 6;
const DAYS_ENUM = Object.freeze({ MONDAY: 0, TUESDAY: 1, WEDNESDAY: 3 });
const dayOfToday = DAYS_ENUM.MONDAY;
enum Days {
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday,
}
console.log(Days.Saturday);
let day: Days = Days.Sunday;
day = Days.Friday;
day = 10;
console.log(day);
type DaysOfWeek = "Monday" | "TuesDay" | "Wednesday";
let dayOfWeek: DaysOfWeek = "Monday";
dayOfWeek = "TuesDay";
dayOfWeek = 1;
Type Inference: 타입 추론
- 타입을 명시하지 않아도 TS에서 타입을 추론하여 지정하지만, 가독성 등을 위해 정확하게 명시해주는 것이 좋다
let text = "hello";
text = "hi";
text = 1;
function add(x: number, y: number) {
return x + y;
}
const result = add(1, 2);
Type Assertion
- 타입 단언, 컴파일러가 타입 추론을 잘 못하거나 너무 보수적으로 할 경우 타입을 지정할 수 있음
- 100% 장담할 수 있는 경우에만 사용할 것!
function jsStrFunc(): any {
return "hello";
}
const result = jsStrFunc();
console.log((result as string).length);
console.log((<string>result).length);
const wrong: any = 5;
console.log((wrong as Array<number>).push(1));
function findNumbers(): number[] | undefined {
return undefined;
}
const numbers = findNumbers()!;
numbers.push(2);
const button = document.querySelector("button");
button.nodeValue;