Если бы я копировал список свойств, я бы, вероятно, определил бы функцию a pick()
, используя Pick
тип :
const pick = <T, K extends keyof T>(obj: T, ...keys: K[]) =>
keys.reduce((acc, k) => ((acc[k] = obj[k]), acc), {} as Pick<T, K>);
А затем предполагая, что у вас естьследующий интерфейс и объект
interface User {
email: string;
name: string;
familyName: string;
password: string;
verifyEmail: boolean;
emailVerfified: boolean;
blocked: boolean;
}
const u: User = {
email: "luser@example.com",
name: "Larry",
familyName: "User",
password: "th3b1gg3stLUSER",
verifyEmail: true,
emailVerfified: false,
blocked: false
};
console.log(u); // everything
Вы можете скопировать только свойства, которые вас интересуют, в новый объект, подобный этому:
const v = pick(u, "name", "familyName", "email");
// const v: Pick<User, "name" | "familyName" | "email">
// const v: {name: string, familyName: string, email: string}
console.log(v); // just name, familyName, email
// {name: "Larry", familyName: "User", email: "luser@example.com"}
Надеюсь, это поможет;удачи!
Ссылка на код