typescript - Egenskapen '''' i exporterade gränssnittet har eller använder ett privat namn ''''
Jag deklarerar ett interface:
export interface ApiClientMetodOptions {
initialFilterSatement?: string;
fieldsMapping?: {
[K in keyof P]?: string;
};
requestParams?: IRequestParams<P>;
additionalParams?: {
[key: string]: unknown;
};
additionalHeaders?: {
[key: string]: string;
};
cancelOption?: IRequestCancelOption;
}
men får följande fel: Property 'fieldsMapping' of exported interface has or is using private name 'P'. Jag gjorde detta för att kapsla typen och använda den i några metoder. Till exempel:
export interface IApiClient {
/**
* Generic function for fetching a list of a certain instances
* @param fieldsMapping function converting fields of `P`-type object to a query field names
*/
getEntities<P, T>(
url: string,
options: {
instanceToEntity?: (instance: unknown) => T;
} & ApiClientMetodOptions,
): Promise<T[]>;
Jag kan inte "typescript" särskilt djupt. Vad gör jag fel och hur åtgärdar jag detta problem?
Svar #1
Du behöver lägga till den generiska parametern P till din gränssnittsdefinition så här:
export interface ApiClientMetodOptions<P> {
initialFilterSatement?: string;
fieldsMapping?: {
[K in keyof P]?: string;
};
requestParams?: IRequestParams<P>;
additionalParams?: {
[key: string]: unknown;
};
additionalHeaders?: {
[key: string]: string;
};
cancelOption?: IRequestCancelOption;
}
Och sedan i din metoddefinition lägg till parametern också:
export interface IApiClient {
/**
* Generic function for fetching a list of a certain instances
* @param fieldsMapping function converting fields of `P`-type object to a query field names
*/
getEntities<P, T>(
url: string,
options: {
instanceToEntity?: (instance: unknown) => T;
} & ApiClientMetodOptions<P>,
): Promise<T[]>;
