Partial<T>

interface Todo {
    title: string;
    description: string;
}

const updateTodo = (todo: Partial<Todo>) => {
    // 일부 또는 모든 속성을 업데이트할 수 있음
};

updateTodo({ title: "New Title" });

Required<T>

모든 속성을 필수로 만드는 타입

interface Todo {
    title?: string;
    description?: string;
}

const todo: Required<Todo> = {
    title: "Title",
    description: "Description"
};

Readonly<T>

모든 속성을 읽기 전용으로 만드는 타입

interface Todo {
    title: string;
    description: string;
}

const todo: Readonly<Todo> = {
    title: "Title",
    description: "Description"
};

// todo.title = "New Title"; // 오류 발생: 읽기 전용 속성은 수정할 수 없음

Record<K, T>

특정 키(K)와 값의 타입(T)으로 구성된 객체 타입을 만드는 타입

type Page = "home" | "about" | "contact";

const pageInfo: Record<Page, string> = {
    home: "/home",
    about: "/about",
    contact: "/contact"
};

Pick<T, K>

interface Todo {
    title: string;
    description: string;
    completed: boolean;
}

type TodoPreview = Pick<Todo, "title" | "completed">;

const todo: TodoPreview = {
    title: "Title",
    completed: false
};

Omit<T, K>

interface Todo {
    title: string;
    description: string;
    completed: boolean;
}

type TodoPreview = Omit<Todo, "description">;

const todo: TodoPreview = {
    title: "Title",
    completed: false
};