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]}

Relaterte artikler