가독성 향상 및 명확한 상수 값 정의
컴파일 시 자동 숫자 매핑, 필요 시 직접 할당 가능
enum UserRole {
ADMIN = "ADMIN",
EDITOR = "EDITOR",
USER = "USER",
}
enum UserLevel {
NOT_OPERATOR, // 0
OPERATOR, // 1
}
function checkPermission(userRole: UserRole, userLevel: UserLevel): void {
// ...
}
const userRole: UserRole = UserRole.EDITOR;
const userLevel: UserLevel = UserLevel.NOT_OPERATOR;
checkPermission(userRole, userLevel);
키-값 쌍으로 구성된 객체를 정의. enum과 유사하지만 'const'나 'let' 키워드 사용 가능.
const obj = {
a: [1, 2, 3],
b: 'b',
c: 4
};
타입 'T'의 모든 속성을 선택적으로 만들어 객체 생성 용이
interface Person {
name: string;
age: number;
}
const updatePerson = (person: Person, fields: Partial<Person>): Person => {
// ...
};
const person: Person = { name: "Spartan", age: 30 };
const changedPerson = updatePerson(person, { age: 31 });
타입 'T'의 모든 속성을 필수로 만듬
interface Person {
name: string;
age: number;
address?: string;
}
type RequiredPerson = Required<Person>;
타입 'T'의 모든 속성을 읽기 전용으로 만듬
interface DatabaseConfig {
host: string;
readonly port: number;
}
const immutableConfig: Readonly<DatabaseConfig> = {
// ...
};
타입 'T'에서 일부 속성만 선택하여 새 타입 생성
interface Person {
name: string;
age: number;
address: string;
}
type SubsetPerson = Pick<Person, "name" | "age">;
타입 'T'에서 일부 속성을 제외한 새 타입 생성
interface Person {
name: string;
age: number;
address: string;
}
type SubsetPerson = Omit<Person, "address">;
###클래스 정의하기
오늘의 한줄평 : 이론은 언제나 어렵다... 그렇지만 노력해야지!