En regardant les définitions de type de @types/leaflet
vous pouvez voir des contrôles personnalisés définis de manière similaire :
export namespace Control {
...
class Zoom extends Control {
constructor(options?: ZoomOptions);
options: ZoomOptions;
}
...
}
Cependant, lorsque vous créez votre contrôle personnalisé par le biais de :
declare module 'leaflet' {
namespace Control {
class CustomControl extends Control {
constructor(options: CustomOptions);
}
}
namespace control {
function customControl(options: CustomOptions): Control.CustomControl;
}
}
L.Control.CustomControl = L.Control.extend({
...
});
lance une erreur de typographie : Type '(new (...args: any[]) => any) & typeof Class' is missing the following properties from type 'typeof CustomControl': Zoom, Attribution, Layers, Scale, and 6 more.
Cela semble se produire parce que l'espace de nom et la classe Control
passer par la fusion des déclarations de Typescript. Cela entraîne CustomControl
pour exiger les propriétés de l'espace de nom plutôt que de la classe.
Y a-t-il un moyen de corriger ce problème ou de le contourner sans forcer la saisie ? any
?