javascript - Hvordan endre ReadOnly-verdier?
Jeg har denne verdien fetchOptions: Readonly<HttpFetchOptionsWithPath> og jeg vil gjerne overskrive en av egenskapene. Jeg har prøvd følgende:
((fetchOptions as Writable<HttpFetchOptionsWithPath>).headers as Writable<any>) = {
'new-value': '123',
...(fetchOptions.headers || {}),
};
men får fortsatt en TypeError: Cannot assign to read only property 'headers' of object '# feil.
JS-koden som kjøres ser slik ut:
fetchOptions.headers = __assign({ 'new-value': '123' }, (fetchOptions.headers || {}));Har du noen ideer om hva jeg gjør galt her?
Svar #1
Du kan ikke endre de skrivebeskyttede verdiene. Det du kan gjøre er å klone disse objektene til en ny instans og fortsette å bruke den nye instansen ...
Object.assign(newVariable, JSON.parse(JSON.stringify(oldVariable)));
Dette vil også gjøre jobben:
const newVariable={...oldVariable, propertyToModify:value}
Svar #2
Med denne erklæringen kan du kopiere og overskrive egenskaper
var obj={...originalObj,[readOnlyProp:value]}
