我正在尝试以角度2 https://kuamoto.wordpress.com/2016/02/26/myth-1-cant-make-offline-apps/comment-page-1/#comment-17
调整本教程我发现了这个相关的问题: Leaflet: Can't extend TileLayer with typescript 2.0 & angular 2 我不知道我是否有正确的index.d.ts文件(我在下面提供)
当我尝试扩展tileLayer时出现以下错误:Property' extend'类型&type; tileLayer'上不存在
var lyr = L.tileLayer.extend({
mbTilesDB: null,
initialize: function(url, options, db) {
console.log("sql plugin: " + db);
this.mbTilesDB = db;
},
getTileUrl: function(tilePoint, zoom, tile) {
[...]
},
_loadTile: function(tile, tilePoint, zoom) {
tile._layer = this;
tile.onload = this._tileOnLoad;
tile.onerror = this._tileOnError;
this.getTileUrl(tilePoint, zoom, tile);
}
});
这是我导入Leaflet的方式:
import * as L from 'leaflet';
这是与TileLayer相关的index.d.ts文件的摘录:
export interface TileLayerOptions extends GridLayerOptions {
minZoom?: number;
maxZoom?: number;
maxNativeZoom?: number;
subdomains?: string | Array<string>;
errorTileUrl?: string;
zoomOffset?: number;
tms?: boolean;
zoomReverse?: boolean;
detectRetina?: boolean;
crossOrigin?: boolean;
[name: string]: any;
}
export interface TileLayer extends GridLayer {
setUrl(url: string, noRedraw?: boolean): this;
}
export function tileLayer(urlTemplate: string, options?: TileLayerOptions): TileLayer;
export interface WMSOptions extends TileLayerOptions {
layers: string;
styles?: string;
format?: string;
transparent?: boolean;
version?: string;
crs?: CRS;
uppercase?: boolean;
}
export interface WMS extends TileLayer {
setParams(params: Object, noRedraw?: boolean): this;
}
export namespace tileLayer {
export function wms(baseUrl: string, options: WMSOptions): WMS;
}
感谢您的帮助
答案 0 :(得分:1)
根据以下错误报告https://github.com/DefinitelyTyped/DefinitelyTyped/issues/11693中的内容,看起来扩展函数在typescript绑定中完全实现。本文推荐的方法是使用以下语法:
{{1}}
这使得项目为我编译。