diff --git a/src/ol/renderer/Layer.js b/src/ol/renderer/Layer.js index 0206a97fc6..51e0202081 100644 --- a/src/ol/renderer/Layer.js +++ b/src/ol/renderer/Layer.js @@ -7,10 +7,13 @@ import Observable from '../Observable.js'; import EventType from '../events/EventType.js'; import SourceState from '../source/State.js'; +/** + * @template {import("../layer/Layer.js").default} LayerType + */ class LayerRenderer extends Observable { /** - * @param {import("../layer/Layer.js").default} layer Layer. + * @param {LayerType} layer Layer. */ constructor(layer) { @@ -21,7 +24,7 @@ class LayerRenderer extends Observable { /** * @private - * @type {import("../layer/Layer.js").default} + * @type {LayerType} */ this.layer_ = layer; @@ -110,7 +113,7 @@ class LayerRenderer extends Observable { } /** - * @return {import("../layer/Layer.js").default} Layer. + * @return {LayerType} Layer. */ getLayer() { return this.layer_; diff --git a/src/ol/renderer/canvas/Layer.js b/src/ol/renderer/canvas/Layer.js index 5508ca9f2d..39d8ce195e 100644 --- a/src/ol/renderer/canvas/Layer.js +++ b/src/ol/renderer/canvas/Layer.js @@ -11,11 +11,12 @@ import {create as createTransform, apply as applyTransform, compose as composeTr /** * @abstract + * @template {import("../../layer/Layer.js").default} LayerType */ class CanvasLayerRenderer extends LayerRenderer { /** - * @param {import("../../layer/Layer.js").default} layer Layer. + * @param {LayerType} layer Layer. */ constructor(layer) { diff --git a/src/ol/renderer/canvas/TileLayer.js b/src/ol/renderer/canvas/TileLayer.js index 4af8c5024d..23a5026f58 100644 --- a/src/ol/renderer/canvas/TileLayer.js +++ b/src/ol/renderer/canvas/TileLayer.js @@ -72,7 +72,7 @@ class CanvasTileLayerRenderer extends CanvasLayerRenderer { * @return {boolean} Tile is drawable. */ isDrawableTile(tile) { - const tileLayer = /** @type {import("../../layer/Tile.js").default} */ (this.getLayer()); + const tileLayer = this.getLayer(); const tileState = tile.getState(); const useInterimTilesOnError = tileLayer.getUseInterimTilesOnError(); return tileState == TileState.LOADED || @@ -90,7 +90,7 @@ class CanvasTileLayerRenderer extends CanvasLayerRenderer { getTile(z, x, y, frameState) { const pixelRatio = frameState.pixelRatio; const projection = frameState.viewState.projection; - const tileLayer = /** @type {import("../../layer/Tile.js").default} */ (this.getLayer()); + const tileLayer = this.getLayer(); const tileSource = tileLayer.getSource(); let tile = tileSource.getTile(z, x, y, pixelRatio, projection); if (tile.getState() == TileState.ERROR) { @@ -142,7 +142,7 @@ class CanvasTileLayerRenderer extends CanvasLayerRenderer { const rotation = viewState.rotation; const pixelRatio = frameState.pixelRatio; - const tileLayer = /** @type {import("../../layer/Tile.js").default} */ (this.getLayer()); + const tileLayer = this.getLayer(); const tileSource = tileLayer.getSource(); const sourceRevision = tileSource.getRevision(); const tileGrid = tileSource.getTileGridForProjection(projection); @@ -285,7 +285,7 @@ class CanvasTileLayerRenderer extends CanvasLayerRenderer { const tileGutter = tilePixelRatio * tileSource.getGutterForProjection(projection); const tilesToDraw = tilesToDrawByZ[currentZ]; for (const tileCoordKey in tilesToDraw) { - const tile = tilesToDraw[tileCoordKey]; + const tile = /** @type {import("../../ImageTile.js").default} */ (tilesToDraw[tileCoordKey]); const tileCoord = tile.tileCoord; // Calculate integer positions and sizes so that tiles align @@ -363,7 +363,7 @@ class CanvasTileLayerRenderer extends CanvasLayerRenderer { } /** - * @param {import("../../Tile.js").default} tile Tile. + * @param {import("../../ImageTile.js").default} tile Tile. * @param {import("../../PluggableMap.js").FrameState} frameState Frame state. * @param {number} x Left of the tile. * @param {number} y Top of the tile. @@ -409,12 +409,12 @@ class CanvasTileLayerRenderer extends CanvasLayerRenderer { /** * Get the image from a tile. - * @param {import("../../Tile.js").default} tile Tile. + * @param {import("../../ImageTile.js").default} tile Tile. * @return {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} Image. * @protected */ getTileImage(tile) { - return /** @type {import("../../ImageTile.js").default} */ (tile).getImage(); + return tile.getImage(); } /** diff --git a/src/ol/renderer/canvas/VectorLayer.js b/src/ol/renderer/canvas/VectorLayer.js index cb19e846cb..9628ba51f5 100644 --- a/src/ol/renderer/canvas/VectorLayer.js +++ b/src/ol/renderer/canvas/VectorLayer.js @@ -144,7 +144,7 @@ class CanvasVectorLayerRenderer extends CanvasLayerRenderer { const snapToPixel = !(viewHints[ViewHint.ANIMATING] || viewHints[ViewHint.INTERACTING]); const transform = this.getRenderTransform(frameState, width, height, 0); - const declutterReplays = /** @type {import("../../layer/Vector.js").default} */ (this.getLayer()).getDeclutter() ? {} : null; + const declutterReplays = this.getLayer().getDeclutter() ? {} : null; replayGroup.execute(context, transform, rotation, snapToPixel, undefined, declutterReplays); if (vectorSource.getWrapX() && projection.canWrapX() && !containsExtent(projectionExtent, extent)) { @@ -199,7 +199,7 @@ class CanvasVectorLayerRenderer extends CanvasLayerRenderer { } else { const resolution = frameState.viewState.resolution; const rotation = frameState.viewState.rotation; - const layer = /** @type {import("../../layer/Vector").default} */ (this.getLayer()); + const layer = this.getLayer(); /** @type {!Object} */ const features = {}; const result = this.replayGroup_.forEachFeatureAtCoordinate(coordinate, resolution, rotation, hitTolerance, @@ -241,7 +241,7 @@ class CanvasVectorLayerRenderer extends CanvasLayerRenderer { * @inheritDoc */ prepareFrame(frameState) { - const vectorLayer = /** @type {import("../../layer/Vector.js").default} */ (this.getLayer()); + const vectorLayer = this.getLayer(); const vectorSource = vectorLayer.getSource(); const animating = frameState.viewHints[ViewHint.ANIMATING]; diff --git a/src/ol/renderer/webgl/Layer.js b/src/ol/renderer/webgl/Layer.js index c8e6cbbc20..7204a9364b 100644 --- a/src/ol/renderer/webgl/Layer.js +++ b/src/ol/renderer/webgl/Layer.js @@ -44,11 +44,12 @@ export const WebGLWorkerMessageType = { * @classdesc * Base WebGL renderer class. * Holds all logic related to data manipulation & some common rendering logic + * @template {import("../../layer/Layer.js").default} LayerType */ class WebGLLayerRenderer extends LayerRenderer { /** - * @param {import("../../layer/Layer.js").default} layer Layer. + * @param {LayerType} layer Layer. * @param {Options=} [opt_options] Options. */ constructor(layer, opt_options) { diff --git a/src/ol/renderer/webgl/PointsLayer.js b/src/ol/renderer/webgl/PointsLayer.js index 7708d23c4b..80812653c7 100644 --- a/src/ol/renderer/webgl/PointsLayer.js +++ b/src/ol/renderer/webgl/PointsLayer.js @@ -367,7 +367,7 @@ class WebGLPointsLayerRenderer extends WebGLLayerRenderer { * @inheritDoc */ prepareFrame(frameState) { - const vectorLayer = /** @type {import("../../layer/Vector.js").default} */ (this.getLayer()); + const vectorLayer = this.getLayer(); const vectorSource = vectorLayer.getSource(); const viewState = frameState.viewState; @@ -418,7 +418,7 @@ class WebGLPointsLayerRenderer extends WebGLLayerRenderer { * @private */ rebuildBuffers_(frameState) { - const vectorLayer = /** @type {import("../../layer/Vector.js").default} */ (this.getLayer()); + const vectorLayer = this.getLayer(); const vectorSource = vectorLayer.getSource(); // saves the projection transform for the current frame state diff --git a/tsconfig.json b/tsconfig.json index 6450627dbb..438785ff84 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -41,7 +41,7 @@ // "typeRoots": [], /* List of folders to include type definitions from. */ // "types": ["node"], /* Type declaration files to be included in compilation. */ // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ - "esModuleInterop": true //, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ + "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ /* Source Map Options */ @@ -53,7 +53,6 @@ /* Experimental Options */ // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ - //"skipDefaultLibCheck": true }, "include": [ "types/**/*.ts",