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...
- Icke-generisk
newsom inte har några parametrar - 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.
