javascript - TS1086: En accessor kan inte deklareras i ett ambient sammanhang


När jag kör med Angular får jag felet TS1086: En accessor kan inte deklareras i ett ambient kontext. för Javascript getters och setters i denna abstrakta Typescript-klass.

Detta är källan:

  /**
   * The current id key for the EStore instance.
   * @return this.config.idKey;
   */
  get ID_KEY(): string {
    return this.config.idKey
  }
  /**
   * The current guid key for the EStore instance.
   * @return this.config.guidKey;
   */
  get GUID_KEY(): string {
    return this.config.guidKey
  }

Detta fungerade bra fram till den senaste versionen av Angular. Är det inte längre tillåtet att använda getters och setters i abstrakta klasser?

Svar #1

Det här är inte ett Angular-fel.

TypeScript 3.7 introducerade en brytande förändring för getters och setters i typdefinitionsfilerna.

Som nämnts ovan genererar TypeScript 3.7 get/set-accessorer i .d.ts-filer vilket kan orsaka brytande förändringar för användare på äldre versioner av TypeScript som 3.5 och tidigare. Användare av TypeScript 3.6 kommer inte att påverkas, eftersom den versionen var framtidssäkrad för denna funktion.

https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html#class-field-mitigations

Du bör använda TypeScript 3.6 eller högre om du ska använda typdefinitioner som genererats med 3.7 eller högre.

Relaterade artiklar