我有兩個物件
一是角色:
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"
}
第二個是角色詳細資訊:
RoleDetails {
name: string;
description: string;
isModerator: string;
}
我想分配roleDetails = role;
,所以當console.log(roleDetails)
我應該得到:
roleDetails = {
name:"HR"
description:"HR of the Company"
isModerator:"N"
}
uj5u.com熱心網友回復:
您可以簡單地單獨分配每個屬性(另請注意,我,在每個值之間添加了原始物件):
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);
您也可以使用一組鍵動態地執行此操作:
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);
并且還帶有要排除的鍵陣列:
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);
uj5u.com熱心網友回復:
您可以使用Omit<Type, Keys>宣告型別RoleDetails省略鍵
- 在這種情況下
roleId
代碼:
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,
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/492376.html
標籤:javascript 打字稿 目的
上一篇:有沒有辦法通過另一個陣列資料過濾具有多個動態條件的物件陣列
下一篇:如何使用過濾方法獲取陣列資料?
