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.

Relaterade artiklar