Я пытаюсь заставить Leaflet и плагин работать вместе в проекте Ionic 2. Я установил и импортировал сам Leaflet и плагин leaflet-path-transform, а также с объявлением типа Leaflet, включенным в DefinatelyTyped. Весь код работает, если я добавлю declare var L: any;
, чтобы игнорировать объявления типа.
Это важные части контроллера страницы (home.ts):
var polyline = new L.Polyline(
L.GeoJSON.coordsToLatLngs([
[114.14314270019531, 22.49479484975443],
[114.21798706054688, 22.524608511026262],
[114.20768737792969, 22.524608511026262],
[114.20768737792969, 22.536024805886974]
]), {
weight: 15,
draggable: true,
transform: true
})
.bindPopup("L.Polyline")
.addTo(map);
polyline.transform.enable();
draggable
и transform
не являются допустимыми параметрами в базовом Leaflet (как и .transform
), поэтому я написал файл объявления типа в PROJECT_DIR\node_modules\@types\leaflet-path-transform\index.d.ts
, чтобы определить их. То, что я написал до сих пор, основано на объявлении типа для leaflet-editable, так как этот плагин позволяет использовать новые MapOptions при создании объекта L.Map.
/// <reference types="leaflet" />
declare namespace L {
export interface Polyline {
draggable: boolean;
}
namespace Polyline {
export interface PolylineOptions {
draggable: boolean;
}
}
}
Пока это относится только к первому варианту, но не удалось устранить ошибку TypeScript:
Typescript Error
Argument of type '{ weight: number; draggable: boolean; }' is not assignable to parameter of type 'PolylineOptions'. Object literal may only specify known properties, and 'draggable' does not exist in type 'PolylineOptions'.
Может ли кто-нибудь помочь мне понять, что я здесь делаю неправильно? Сначала я подумал, что файл объявления нового типа просто игнорируется, но если я оставлю в нем опечатку, это вызовет новые ошибки, так что эффект есть.
Если это поможет, вот среда, в которой я работаю:
- Ионная структура: 2.0.0
- Ионный родной: 2.4.1
- Ионные сценарии приложений: 1.0.0
- Угловое ядро: 2.2.1
- Угловой компилятор CLI: 2.2.1
- Узел: 6.9.4
- Платформа ОС: Windows 10
- Платформа навигатора: Win32
- Пользовательский агент: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, например Gecko) Chrome/56.0.2924.87 Safari/537.36