javascript - Ta bort fält från typescript-interfaceobjekt
Jag får ett JSON-svar och sparar det i MongoDB, men fälten som jag inte behöver hamnar också i databasen. Finns det något sätt att ta bort de onödiga fälten?
interface Test{
name:string
};
const temp :Test = JSON.parse('{ "name":"someName","age":20 }') as Test;
console.log(temp);
utdata :
{ name: 'someName', age: 20 }
Svar #1
Du kan använda en funktion som plockar vissa egenskaper från ett givet objekt:
function pick<T, K extends keyof T>(obj: T, ...keys: K[]): Pick<T, K> {
const copy = {} as Pick<T, K>;
keys.forEach(key => copy[key] = obj[key]);
return copy;
}
Sedan :
let obj = { "name": "someName", "age": 20 };
let copy = pick(obj, "name") as Test;
console.log(copy); // { name: "someName" }
Svar #2
Låt oss säga att du har detta objekt.
const x = {a: 1, b: 2, c: 3};
Om du vill skapa ett objekt med endast a och b, kan du använda följande metod.
const {c, ...y} = x;
console.log(y);
Du kommer att se att y endast har a och b nu.
Detta kommer också inte att ge ett fel om fältet c inte fanns i x. Som ett exempel,
const x: any = {a: 1, b: 2, c: 3};
const {d, ...y} = x;
console.log(y);
Det här fungerar helt utan fel och om du loggar värdet av d, kommer det att vara undefined.
