javascript - Typescript: Udvidelse af Set i klasse forårsager fejl (Konstruktør Set kræver 'new')


Jeg prøver at implementere nogle grundlæggende operationer på Set-objektet som det står her

Dette er koden

export class Conjunto extends Set<any>{
  constructor(initialValues?) {
    super();
    return new Conjunto(initialValues);
  }

  isSuperset(subset) {
    //some code
  }
}

Har I nogen idé om, hvordan man får det til at fungere? Eller gør jeg noget forkert?

I øjeblikket bruger jeg hacken, som denne fyr fandt her

Svar #1

hvis du prøver at tilføje funktioner til Set-prototypen, eller tilføje polyfills til Set, kan du gøre følgende:

declare global {
  interface Set<T> {
      // polyfill
      isSuperset(subset: Set<T>) : boolean;
      // new function
      someNewFunc(): boolean;
  }
}

// add polyfill to the Set prototype as mentioned in the doc you provided: https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/Set 
Set.prototype.isSuperset = function(subset) {
    for (var elem of subset) {
        if (!this.has(elem)) {
            return false;
        }
    }
    return true;
}

//add the new someNewFunc;
Set.prototype.someNewFunc = function() {
    // some logic here...
    return true;
}

at bruge:

stringSet = new Set<string>()
stringSet.isSuperset(someOtherSet);
stringSet.someNewFunc(); // returns true

Relaterede artikler