angular - hur man lägger till ett nytt nyckel-värde-par i typescript
Hej, jag vill lägga till ett nytt nyckel-värde-par i ett befintligt objekt i TypeScript, jag försökte följande steg men inget händer och inget felmeddelande visas, snälla hjälp
profile = {"RouteID":"B76F77922EF83A4EE04024921F591A6F","Name":"3019998FALCON","rName":"KILGORE REMOVED"}
let newvalue = "jzket"
profile["userID"] = newvalue
Svar #1
Koden i din fråga är till stor del korrekt, här är ett fullständigt fungerande exempel:
const profile = {
"RouteID": "B76F77922EF83A4EE04024921F591A6F",
"Name": "3019998FALCON",
"rName": "KILGORE REMOVED"
}
profile["userID"] = "jzket";
// Works everywhere
console.log(profile["userID"]);
// Works, but violates the type information available here
console.log(profile.userID);
Du kommer att märka att typesystemet kommer att klaga på den senare användningen, eftersom userID inte är en del av typen som härleds för profile.
Du kan antingen hålla dig till det första exemplet (profile['userID']) eller ge lite mer typinformation:
interface Profile {
RouteID: string;
Name: string;
rName: string;
userID?: string;
}
const profile: Profile = {
"RouteID": "B76F77922EF83A4EE04024921F591A6F",
"Name": "3019998FALCON",
"rName": "KILGORE REMOVED"
}
profile["userID"] = "jzket";
// Works everywhere
console.log(profile["userID"]);
// Works, but violates the type information available here
console.log(profile.userID);
Svar #2
Jag håller helt med @Fenton. Kanske är ett lite bättre tillvägagångssätt att lägga till ett nytt nyckel/värde-par med:
Object.assign så här:
const newProfile = Object.assign(profile, { userID: "jzket" });
Eller med Spridningssyntax:
const newProfile = ({...profile, userID: "jzket" });
JSFiddle exempel:
const profile = {
"ruteID":"B76F77922EF83A4EE04024921F591A6F",
"Name":"3019998FALCON",
"rName":"KILGORE REMOVED",
};
// With object assign
const exampleOne = Object.assign(profile, { userID: "jzket" });
// With spread syntax
const exampleTwo = ({...profile, userID: "jzket" })
console.log(exampleOne);
console.log(exampleTwo);Användbara länkar:
Spridningssyntax
Objekt Tilldela
