맵드 타입 - 타입 조작하기
/**
* 맵드 타입 (객체 타입을 조작함) 활용도 높고 실무에서 잘 쓰임
* -> 인터페이스에서는 쓸 수 없음
*/
interface User {
id: number;
name: string;
age: number;
}
type PartialUser = {
// key가 id or name or age일 수 있다.
[key in 'id' | 'name' | 'age']: User[key];
};
type BooleanUser = {
[key in keyof User]: boolean
}
type ReadonlyUser = {
readonly [key in keyof User]: User[key];
}
// 한명의 유저 정보를 불러오는 기능
function fetchUser(): ReadonlyUser{
// ... 기능
return {
id: 1,
name: "박정수",
age: 26,
};
}
const user = fetchUser();
// user.id = 1; 맵드 타입으로 readonly 사용해서 수정 안됨
// 한명의 유저 정보를 수정하는 기능
function updateUser(user: User){
// .... 수정하는 기능
}
updateUser({
id: 1,
name: "박정수",
age: 25,
})