diff --git a/src/ol/format/MVT.js b/src/ol/format/MVT.js index f5f167e15a..6977299acf 100644 --- a/src/ol/format/MVT.js +++ b/src/ol/format/MVT.js @@ -209,11 +209,13 @@ class MVT extends FeatureFormat { geometryType === GeometryType.MULTI_LINE_STRING ? new MultiLineString(flatCoordinates, GeometryLayout.XY, ends) : null; } - feature = new this.featureClass_(); + const ctor = /** @type {typeof import("../Feature.js").default} */ (this.featureClass_); + feature = new ctor(); if (this.geometryName_) { feature.setGeometryName(this.geometryName_); } - const geometry = transformWithOptions(geom, false, this.adaptOptions(opt_options)); + const geometry = /** @type {import("../geom/Geometry.js").default} */ (transformWithOptions(geom, false, + this.adaptOptions(opt_options))); feature.setGeometry(geometry); feature.setId(id); feature.setProperties(values); diff --git a/src/ol/interaction/Snap.js b/src/ol/interaction/Snap.js index c31520c7a3..8f4aae7d35 100644 --- a/src/ol/interaction/Snap.js +++ b/src/ol/interaction/Snap.js @@ -239,9 +239,7 @@ class Snap extends PointerInteraction { } else if (this.source_) { features = this.source_.getFeatures(); } - return ( - /** @type {!Array|!import("../Collection.js").default} */ (features) - ); + return features; } /** @@ -257,7 +255,7 @@ class Snap extends PointerInteraction { } /** - * @param {import("../source/Vector.js").default|import("../Collection.js").CollectionEvent} evt Event. + * @param {import("../source/Vector.js").VectorSourceEvent|import("../Collection.js").CollectionEvent} evt Event. * @private */ handleFeatureAdd_(evt) { @@ -265,13 +263,13 @@ class Snap extends PointerInteraction { if (evt instanceof VectorSourceEvent) { feature = evt.feature; } else if (evt instanceof CollectionEvent) { - feature = evt.element; + feature = /** @type {import("../Feature.js").default} */ (evt.element); } - this.addFeature(/** @type {import("../Feature.js").default} */ (feature)); + this.addFeature(feature); } /** - * @param {import("../source/Vector.js").default|import("../Collection.js").CollectionEvent} evt Event. + * @param {import("../source/Vector.js").VectorSourceEvent|import("../Collection.js").CollectionEvent} evt Event. * @private */ handleFeatureRemove_(evt) { @@ -279,9 +277,9 @@ class Snap extends PointerInteraction { if (evt instanceof VectorSourceEvent) { feature = evt.feature; } else if (evt instanceof CollectionEvent) { - feature = evt.element; + feature = /** @type {import("../Feature.js").default} */ (evt.element); } - this.removeFeature(/** @type {import("../Feature.js").default} */ (feature)); + this.removeFeature(feature); } /** @@ -348,7 +346,7 @@ class Snap extends PointerInteraction { setMap(map) { const currentMap = this.getMap(); const keys = this.featuresListenerKeys_; - const features = this.getFeatures_(); + const features = /** @type {Array} */ (this.getFeatures_()); if (currentMap) { keys.forEach(unlistenByKey); diff --git a/src/ol/layer/Layer.js b/src/ol/layer/Layer.js index 4916a09c00..e7dc907d79 100644 --- a/src/ol/layer/Layer.js +++ b/src/ol/layer/Layer.js @@ -192,13 +192,14 @@ class Layer extends BaseLayer { } if (map) { this.mapPrecomposeKey_ = listen(map, RenderEventType.PRECOMPOSE, function(evt) { + const renderEvent = /** @type {import("../render/Event.js").default} */ (evt); const layerState = this.getLayerState(); layerState.managed = false; if (this.getZIndex() === undefined) { layerState.zIndex = Infinity; } - evt.frameState.layerStatesArray.push(layerState); - evt.frameState.layerStates[getUid(this)] = layerState; + renderEvent.frameState.layerStatesArray.push(layerState); + renderEvent.frameState.layerStates[getUid(this)] = layerState; }, this); this.mapRenderKey_ = listen(this, EventType.CHANGE, map.render, map); this.changed(); diff --git a/src/ol/layer/VectorTile.js b/src/ol/layer/VectorTile.js index 7ab4c3312f..df8c39d4ab 100644 --- a/src/ol/layer/VectorTile.js +++ b/src/ol/layer/VectorTile.js @@ -116,11 +116,11 @@ class VectorTileLayer extends VectorLayer { } options.renderMode = renderMode; - const baseOptions = assign({}, options); - + const baseOptions = /** @type {Object} */ (assign({}, options)); delete baseOptions.preload; delete baseOptions.useInterimTilesOnError; - super(baseOptions); + + super(/** @type {import("./Vector.js").Options} */ (baseOptions)); this.setPreload(options.preload ? options.preload : 0); this.setUseInterimTilesOnError(options.useInterimTilesOnError !== undefined ? diff --git a/src/ol/pointer/MouseSource.js b/src/ol/pointer/MouseSource.js index bdcb96344d..169e4b55a6 100644 --- a/src/ol/pointer/MouseSource.js +++ b/src/ol/pointer/MouseSource.js @@ -226,7 +226,7 @@ class MouseSource extends EventSource { * @param {import("./PointerEventHandler.js").default} dispatcher Event handler. * @return {Object} The copied event. */ -function prepareEvent(inEvent, dispatcher) { +export function prepareEvent(inEvent, dispatcher) { const e = dispatcher.cloneEvent(inEvent, inEvent); // forward mouse preventDefault diff --git a/src/ol/pointer/MsSource.js b/src/ol/pointer/MsSource.js index 2c1893396b..385590222d 100644 --- a/src/ol/pointer/MsSource.js +++ b/src/ol/pointer/MsSource.js @@ -171,6 +171,7 @@ class MsSource extends EventSource { * @return {Object} The copied event. */ prepareEvent_(inEvent) { + /** @type {MSPointerEvent|Object} */ let e = inEvent; if (typeof inEvent.pointerType === 'number') { e = this.dispatcher.cloneEvent(inEvent, inEvent); diff --git a/src/ol/pointer/PointerEventHandler.js b/src/ol/pointer/PointerEventHandler.js index a12ca0ce88..46636d4c3d 100644 --- a/src/ol/pointer/PointerEventHandler.js +++ b/src/ol/pointer/PointerEventHandler.js @@ -36,7 +36,7 @@ import {listen, unlisten} from '../events.js'; import EventTarget from '../events/Target.js'; import {POINTER, MSPOINTER, TOUCH} from '../has.js'; import PointerEventType from '../pointer/EventType.js'; -import MouseSource from '../pointer/MouseSource.js'; +import MouseSource, {prepareEvent as prepareMouseEvent} from '../pointer/MouseSource.js'; import MsSource from '../pointer/MsSource.js'; import NativeSource from '../pointer/NativeSource.js'; import PointerEvent from '../pointer/PointerEvent.js'; @@ -402,7 +402,7 @@ class PointerEventHandler extends EventTarget { */ wrapMouseEvent(eventType, event) { const pointerEvent = this.makeEvent( - eventType, MouseSource.prepareEvent(event, this), event); + eventType, prepareMouseEvent(event, this), event); return pointerEvent; } diff --git a/src/ol/pointer/TouchSource.js b/src/ol/pointer/TouchSource.js index b629049d26..316a4233ae 100644 --- a/src/ol/pointer/TouchSource.js +++ b/src/ol/pointer/TouchSource.js @@ -300,12 +300,12 @@ class TouchSource extends EventSource { if (count >= touchList.length) { const d = []; for (let i = 0; i < count; ++i) { - const key = keys[i]; + const key = Number(keys[i]); const value = this.pointerMap[key]; // Never remove pointerId == 1, which is mouse. // Touch identifiers are 2 smaller than their pointerId, which is the // index in pointermap. - if (key != /** @type {string} */ (POINTER_ID) && !this.findTouch_(touchList, key - 2)) { + if (key != POINTER_ID && !this.findTouch_(touchList, key - 2)) { d.push(value.out); } } @@ -348,7 +348,7 @@ class TouchSource extends EventSource { this.dispatcher.move(event, browserEvent); if (outEvent && outTarget !== event.target) { outEvent.relatedTarget = event.target; - event.relatedTarget = outTarget; + /** @type {Object} */ (event).relatedTarget = outTarget; // recover from retargeting by shadow outEvent.target = outTarget; if (event.target) { @@ -356,8 +356,8 @@ class TouchSource extends EventSource { this.dispatcher.enterOver(event, browserEvent); } else { // clean up case when finger leaves the screen - event.target = outTarget; - event.relatedTarget = null; + /** @type {Object} */ (event).target = outTarget; + /** @type {Object} */ (event).relatedTarget = null; this.cancelOut_(browserEvent, event); } }