Skip to content

Typoskript-Destrukturierung mit erforderlichen Parametern

Lösung:

Sie verwenden einen Standardwert {} für das PageConfig-Konstruktorargument, aber Sie haben markiert getList wie im Typ gefordert. Wenn ich dich richtig verstehe, willst du das Konstruktorargument haben und getList immer gesetzt, also ändern Sie Ihren Code in:

export class PageConfig {
  constructor({
    getList,
    isSliding = false
  }: {
    getList: (pagingInfo: PagingInfo) => Observable<any>;
    isSliding?: boolean;
  }) {
    … // use getList and isSliding
  }
}

Diese Syntax (Destrukturierung mit Standardwerten) kann manchmal etwas umständlich sein. Es wird klarer, wenn Sie den Konstruktorargumenttyp extrahieren.

Beispiel für TypeScript-Dokumente

Sie möchten die Standardeinstellung entfernen und auch die Parameterreihenfolge ändern - erforderliche Parameter stehen immer vor optionalen Parametern:

constructor(getList: (pagingInfo: PagingInfo) => Observable<any>, isSliding?: boolean = false) {...}

Eine Option, wenn alle Konstruktorparameter optional sind/einen Standardwert haben, wäre einfach eine partielle Konfiguration im Konstruktor zu verwenden und mit Standardwerten zusammenzuführen, z

interface IPageConfigConstructor {
  isSliding: boolean;
  getList: (pagingInfo) => Observable<any>;
}
const DEFAULT_CONFIG:IPageConfigConstructor = {
  isSliding: true,
  getList: (pagingInfo) => null
}

class PageConfig {
  constructor(config: Partial<IPageConfigConstructor>) {
    const mergedConfig:IPageConfigConstructor = {...DEFAULT_CONFIG,...config}
  }
}

class UsersPage {
  config = new PageConfig({getList:(pagingInfo)=>this.getList(pagingInfo)});

  getList(pagingInfo) {
    // do work...
    return new Observable
  }
}
Click to rate this post!
[Total: 0 Average: 0]



Anderer Beitrag

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.