I TypeScript, när jag använder myMap för att utöka Map, men det visar Förväntade 0 argument


Kan inte Map i js ta emot en parameter? Finns det någon expert som kan lära mig?

class myMap extends Map {
  constructor(props: any) {
    super(props);
  }
}

Svar #1

Typdefinitionen av Map är...

interface MapConstructor {
    new(): Map<any, any>;
    new<K, V>(entries?: readonly (readonly [K, V])[] | null): Map<K, V>;
    readonly prototype: Map<any, any>;
}

vilket ger 2 konstruktörsfunktioner...

  1. Icke-generisk new som inte har några parametrar
  2. Generisk new<K, V> som tar 1 parameter

Båda returnerar ett gränssnitt av Map<K, V>. Nu när vi utökar myMap med en icke-generisk Map, är den tillgängliga konstruktorn utan parametrar. För att kunna skicka en parameter kan vi skriva definitionen av myMap på följande sätt, om vi inte har någon annan anledning att inte göra det.

class myMap extends Map<string, string> {
  constructor(props: any) {
    super(props)
  }
}

där Map<string, string> bara är ett exempel för illustration. Vi måste bestämma den faktiska typen av Map<K, V> utifrån sammanhanget för användningsfallet.