기존의 객체 타입을 기반으로 새로운 객체 타입을 만드는 문법
- 인터페이스에서는 사용할 수 없다. 타입 별칭으로 써야함
interface User {
id: number;
name: string;
age: number;
}
//한명의 유저 정보를 불러오는 기능
function fetchUser() : User{
//... 기능
return {
id: 1,
name: "kim",
age: 27
}
}
//한명의 유저 정보를 수정하는 기능
function updateUser(user: User) {
//수정 기능
}
updateUser({
id: 1,
name: 'kim',
age: 25
})
interface User {
id: number;
name: string;
age: number;
}
interface PartialUser {
id?: number;
name?: string;
age?: number;
}
//한명의 유저 정보를 불러오는 기능
function fetchUser() : User{
//... 기능
return {
id: 1,
name: "kim",
age: 27
}
}
//한명의 유저 정보를 수정하는 기능
function updateUser(user: PartialUser) {
//수정 기능
}
updateUser({
id: 1,
// name: 'kim',
// age: 25
})
type PartialUser = {
[key in "id" | "name" | "age"] : User[key]
}
type PartialUser = {
[key in "id" | "name" | "age"]?: User[key];
};
맵드 타입 활용 1. keyof와 같이 쓰는 맵드 타입
type PartialUser = {
[key in keyof User]?: User[key];
};
keyof User
를 통해 User 인터페이스의 key를 유니언타입으로 뽑아오니, 앞서 설정한 id" | "name" | "age" 와 동일한 효과를 누릴 수 있다.맵드 타입 활용 2.
type BooleanUser = {
[key in keyof User] : boolean;
}
좋은 글 감사합니다.