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
}
}