2017-02-17 8 views
2

Я пытаюсь получить Лифлет и плагин для совместной работы в проекте Ionic 2 , Я установил и импортировал сам Листовку и плагин leaflet-path-transform, а также the Leaflet type declaration, включенный в DefinatelyTyped. Код работает, если я добавлю declare var L: any;, чтобы игнорировать объявления типов.Аргумент типа X не присваивается параметру типа Y. Литерал объекта может указывать только известные свойства, а X не существует в типе Y

Это важные части контроллера страницы (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 не действительны варианты в основной листовке (ни .transform), поэтому я написал декларацию типа файл на PROJECT_DIR\node_modules\@types\leaflet-path-transform\index.d.ts, чтобы определить их. То, что я написал до сих пор, основано на the type declaration for leaflet-editable, так как этот плагин позволяет создавать новые MapOptions при создании объекта L.Map.

/// <reference types="leaflet" /> 

declare namespace L { 

    export interface Polyline { 
     draggable: boolean; 
    } 

    namespace Polyline { 
     export interface PolylineOptions { 
      draggable: boolean; 
     } 
    } 

} 

This только адреса первый вариант до сих пор, но это не удалось устранить ошибку Машинопись:

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'. 

Может кто-то помочь мне понять, что я делаю неправильно здесь? Сначала я думал, что новый файл объявления типа просто игнорируется, но если я оставлю в нем опечатку, он вызывает новые ошибки, поэтому он, похоже, имеет эффект.

В случае помогает, вот окружающая среда Я работаю в:

  • Ионные Framework: 2.0.0
  • Ионные Native: 2.4.1
  • Ионные App Scripts: 1,0. 0
  • Угловая Core: 2.2.1
  • Угловая Компилятор CLI: 2.2.1
  • Node: 6.9.4
  • OS Платформа: Windows 10
  • Navigator Платформа: Win32
  • Агент пользователя: Mozilla/5.0 (Windows NT 10,0; WOW64) AppleWebKit/537,36 (KHTML, как Gecko) Chrome/56.0.2924.87 Safari/537,36
+0

Вы получили его? – ackuser

+0

Пока нет. Я только что использовал «любой» модификатор вместо правильного объявления типа. – carpiediem

ответ

0

вы можете прочитать этот пост http://yunkus.com/angular-error-object-literal-may-only-specify-known-properties/ это супер легко решить, но трудно найти причину. использование «any» все же является одним из способов, однако это не лучшее решение. Потому что мы просто хотим использовать собственный класс для создания переменной справа? к счастью, ответ имеет alredy в том post.you можете прочитать это, но пост пишет по-китайски. Как вы можете получить его.

Смежные вопросы