고급타입 활용
enum vs. object literal
enum
enum UserRole {
ADMIN = "ADMIN",
EDITOR = "EDITOR",
USER = "USER",
}
object literal
const obj = {
a: [1,2,3],
b: 'b',
c: 4
}
어떨 때 enum을 쓰고 어떨 때 object literal을 쓸까?
enum 은 간단한 상수 값일 경우에 쓴다. 너무 자주 변하면 오히려 안 쓰는 것이 좋다.
객체 리터럴은 멤버의 값이나 데이터 타입을 맘대로 변경 가능
유틸리티 타입 훑어보기
기본 타입을 변형하거나 조작하기 위한 몇 가지 유틸리티 타입을 제공한다.
타입 T의 모든 속성을 선택저긍로 만든다. 기존 타입의 일부만 제공해도 생성 가능
활용사례
interface Person {
name: string;
age: number;
}
const updatePerson = (person: Person, fields: Partial<Person>): Person => {
return { ...person, ...fields };
};
const person: Person = { name: "Spartan", age: 30 };
const changedPerson = updatePerson(person, { age: 31 });
not null 허용 하지 않을 때 사용
활용사례
interface Person {
name: string;
age: number;
address?: string; // 속성 명 뒤에 붙는 ?가 뭘까요
}
type RequiredPerson = Required<Person>;
읽기 전용으로 만듦
Pick<T, K>
유틸리티 타입은 타입 T에서 K 속성들만 선택하여 새로운 타입을 만듦
interface Person {
name: string;
age: number;
address: string;
}
type SubsetPerson = Pick<Person, "name" | "age">;
const person: SubsetPerson = { name: "Spartan", age: 30 };
Omit<T, K>
유틸리티 타입은 타입 T에서 K 속성들만 제외한 새로운 타입을 만듦 Pick<T, K>
유틸리티 타입과는 반대의 동작
interface Person {
name: string;
age: number;
address: string;
}
type SubsetPerson = Omit<Person, "address">;
const person: SubsetPerson = { name: "Alice", age: 30 };
Last updated