I have two Object
one is role:
Role {
roleId: string;
name: string;
description: string;
isModerator: string;
}
role = {
roleId:"8e8be141-130d-4e5c-82d2-0a642d4b73e1",
name:"HR",
description:"HR of the Company",
isModerator:"N"
}
and 2nd is roleDetails:
RoleDetails {
name: string;
description: string;
isModerator: string;
}
I want to assign roleDetails = role;
so when I console.log(roleDetails)
I should get:
roleDetails = {
name:"HR"
description:"HR of the Company"
isModerator:"N"
}
CodePudding user response:
You can use Omit<Type, Keys> to declare type RoleDetails
omitting keys
- in this case
roleId
Code:
interface Role {
roleId: string;
name: string;
description: string;
isModerator: string;
}
type RoleDetails = Omit<Role, 'roleId'>;
const role: Role = {
roleId: '8e8be141-130d-4e5c-82d2-0a642d4b73e1',
name: 'HR',
description: 'HR of the Company',
isModerator: 'N',
};
const roleDetails: RoleDetails = {
name: role.name,
description: role.description,
isModerator: role.isModerator,
};
CodePudding user response:
You can simply assign each property individually (also note I've added ,
in your original object between each value):
let role = {
roleId: "8e8be141-130d-4e5c-82d2-0a642d4b73e1",
name: "HR",
description: "HR of the Company",
isModerator: "N"
};
let roleDetails = {
name: role.name,
description: role.description,
isModerator: role.isModerator
};
console.log(roleDetails);
You could also do this dynamically with an array of keys:
let role = {
roleId: "8e8be141-130d-4e5c-82d2-0a642d4b73e1",
name: "HR",
description: "HR of the Company",
isModerator: "N"
};
let keys = ["name", "description", "isModerator"];
let roleDetails = Object.entries(role).reduce((a, [k, v]) => {
if (keys.includes(k)) a[k] = v;
return a;
}, {});
console.log(roleDetails);
And also with an array of keys to exclude:
let role = {
roleId: "8e8be141-130d-4e5c-82d2-0a642d4b73e1",
name: "HR",
description: "HR of the Company",
isModerator: "N"
};
let keysToExclude = ["roleId"];
let roleDetails = Object.entries(role).reduce((a, [k, v]) => {
if (!keysToExclude.includes(k)) a[k] = v;
return a;
}, {});
console.log(roleDetails);