diff --git a/externs/olx.js b/externs/olx.js
index 8ada72db1a..eee156fdec 100644
--- a/externs/olx.js
+++ b/externs/olx.js
@@ -143,14 +143,14 @@ olx.GraticuleOptions.prototype.targetSize;
/**
* Object literal with config options for the map.
- * @typedef {{controls: (ol.Collection|Array.
|undefined),
+ * @typedef {{controls: (ol.Collection.|Array.|undefined),
* deviceOptions: (olx.DeviceOptions|undefined),
* pixelRatio: (number|undefined),
- * interactions: (ol.Collection|Array.|undefined),
+ * interactions: (ol.Collection.|Array.|undefined),
* keyboardEventTarget: (Element|Document|string|undefined),
- * layers: (Array.|ol.Collection|undefined),
+ * layers: (Array.|ol.Collection.|undefined),
* logo: (boolean|string|olx.LogoOptions|undefined),
- * overlays: (ol.Collection|Array.|undefined),
+ * overlays: (ol.Collection.|Array.|undefined),
* renderer: (ol.RendererType|Array.|string|undefined),
* target: (Element|string|undefined),
* view: (ol.View|undefined)}}
@@ -162,7 +162,7 @@ olx.MapOptions;
/**
* Controls initially added to the map. If not specified,
* {@link ol.control.defaults ol.control.defaults()} is used.
- * @type {ol.Collection|Array.|undefined}
+ * @type {ol.Collection.|Array.|undefined}
*/
olx.MapOptions.prototype.controls;
@@ -185,7 +185,7 @@ olx.MapOptions.prototype.pixelRatio;
/**
* Interactions that are initially added to the map. If not specified,
* {@link ol.interaction.defaults ol.interaction.defaults()} is used.
- * @type {ol.Collection|Array.|undefined}
+ * @type {ol.Collection.|Array.|undefined}
*/
olx.MapOptions.prototype.interactions;
@@ -205,7 +205,7 @@ olx.MapOptions.prototype.keyboardEventTarget;
/**
* Layers. If this is not defined, a map with no layers will be rendered.
- * @type {Array.|ol.Collection|undefined}
+ * @type {Array.|ol.Collection.|undefined}
*/
olx.MapOptions.prototype.layers;
@@ -223,7 +223,7 @@ olx.MapOptions.prototype.logo;
/**
* Overlays initially added to the map. By default, no overlays are added.
- * @type {ol.Collection|Array.|undefined}
+ * @type {ol.Collection.|Array.|undefined}
*/
olx.MapOptions.prototype.overlays;
@@ -1732,7 +1732,7 @@ olx.interaction.DragZoomOptions.prototype.style;
/**
- * @typedef {{features: (ol.Collection|undefined),
+ * @typedef {{features: (ol.Collection.|undefined),
* source: (ol.source.Vector|undefined),
* snapTolerance: (number|undefined),
* type: ol.geom.GeometryType,
@@ -1747,7 +1747,7 @@ olx.interaction.DrawOptions;
/**
* Destination collection for the drawn features.
- * @type {ol.Collection|undefined}
+ * @type {ol.Collection.|undefined}
*/
olx.interaction.DrawOptions.prototype.features;
@@ -1866,7 +1866,7 @@ olx.interaction.KeyboardZoomOptions.prototype.delta;
* @typedef {{deleteCondition: (ol.events.ConditionType|undefined),
* pixelTolerance: (number|undefined),
* style: (ol.style.Style|Array.|ol.style.StyleFunction|undefined),
- * features: ol.Collection}}
+ * features: ol.Collection.}}
* @api
*/
olx.interaction.ModifyOptions;
@@ -1899,7 +1899,7 @@ olx.interaction.ModifyOptions.prototype.style;
/**
* The features the interaction works on.
- * @type {ol.Collection}
+ * @type {ol.Collection.}
*/
olx.interaction.ModifyOptions.prototype.features;
@@ -2200,7 +2200,7 @@ olx.layer.LayerOptions.prototype.maxResolution;
* extent: (ol.Extent|undefined),
* minResolution: (number|undefined),
* maxResolution: (number|undefined),
- * layers: (Array.|ol.Collection|undefined)}}
+ * layers: (Array.|ol.Collection.|undefined)}}
* @api
*/
olx.layer.GroupOptions;
@@ -2272,7 +2272,7 @@ olx.layer.GroupOptions.prototype.maxResolution;
/**
* Child layers.
- * @type {Array.|ol.Collection|undefined}
+ * @type {Array.|ol.Collection.|undefined}
*/
olx.layer.GroupOptions.prototype.layers;
@@ -2615,7 +2615,7 @@ olx.layer.VectorOptions.prototype.visible;
/**
- * @typedef {{features: (Array.|ol.Collection|undefined),
+ * @typedef {{features: (Array.|ol.Collection.|undefined),
* map: (ol.Map|undefined),
* style: (ol.style.Style|Array.|ol.style.StyleFunction|undefined)}}
* @api
@@ -2625,7 +2625,7 @@ olx.FeatureOverlayOptions;
/**
* Features.
- * @type {Array.|ol.Collection|undefined}
+ * @type {Array.|ol.Collection.|undefined}
*/
olx.FeatureOverlayOptions.prototype.features;
diff --git a/src/ol/collection.js b/src/ol/collection.js
index d4b9519542..25505c3f0a 100644
--- a/src/ol/collection.js
+++ b/src/ol/collection.js
@@ -79,7 +79,8 @@ ol.CollectionProperty = {
* @constructor
* @extends {ol.Object}
* @fires ol.CollectionEvent
- * @param {Array=} opt_array Array.
+ * @param {Array.=} opt_array Array.
+ * @template T
* @api stable
*/
ol.Collection = function(opt_array) {
@@ -88,7 +89,7 @@ ol.Collection = function(opt_array) {
/**
* @private
- * @type {Array.<*>}
+ * @type {Array.}
*/
this.array_ = opt_array || [];
@@ -110,8 +111,8 @@ ol.Collection.prototype.clear = function() {
/**
- * @param {Array} arr Array.
- * @return {ol.Collection} This collection.
+ * @param {Array.} arr Array.
+ * @return {ol.Collection.} This collection.
* @api stable
*/
ol.Collection.prototype.extend = function(arr) {
@@ -129,7 +130,7 @@ ol.Collection.prototype.extend = function(arr) {
* for every element. This function takes 3 arguments (the element, the
* index and the array). The return value is ignored.
* @param {S=} opt_this The object to use as `this` in `f`.
- * @template T,S
+ * @template S
* @api stable
*/
ol.Collection.prototype.forEach = function(f, opt_this) {
@@ -142,7 +143,7 @@ ol.Collection.prototype.forEach = function(f, opt_this) {
* is mutated, no events will be dispatched by the collection, and the
* collection's "length" property won't be in sync with the actual length
* of the array.
- * @return {Array} Array.
+ * @return {Array.} Array.
* @api stable
*/
ol.Collection.prototype.getArray = function() {
@@ -153,7 +154,7 @@ ol.Collection.prototype.getArray = function() {
/**
* Get the element at the provided index.
* @param {number} index Index.
- * @return {*} Element.
+ * @return {T} Element.
* @api stable
*/
ol.Collection.prototype.item = function(index) {
@@ -175,7 +176,7 @@ ol.Collection.prototype.getLength = function() {
/**
* Insert an element at the provided index.
* @param {number} index Index.
- * @param {*} elem Element.
+ * @param {T} elem Element.
* @api stable
*/
ol.Collection.prototype.insertAt = function(index, elem) {
@@ -188,7 +189,7 @@ ol.Collection.prototype.insertAt = function(index, elem) {
/**
* Remove the last element of the collection.
- * @return {*} Element.
+ * @return {T} Element.
* @api stable
*/
ol.Collection.prototype.pop = function() {
@@ -198,7 +199,7 @@ ol.Collection.prototype.pop = function() {
/**
* Insert the provided element at the end of the collection.
- * @param {*} elem Element.
+ * @param {T} elem Element.
* @return {number} Length.
* @api stable
*/
@@ -211,8 +212,8 @@ ol.Collection.prototype.push = function(elem) {
/**
* Removes the first occurence of elem from the collection.
- * @param {*} elem Element.
- * @return {*} The removed element or undefined if elem was not found.
+ * @param {T} elem Element.
+ * @return {T|undefined} The removed element or undefined if elem was not found.
* @api stable
*/
ol.Collection.prototype.remove = function(elem) {
@@ -230,7 +231,7 @@ ol.Collection.prototype.remove = function(elem) {
/**
* Remove the element at the provided index.
* @param {number} index Index.
- * @return {*} Value.
+ * @return {T} Value.
* @api stable
*/
ol.Collection.prototype.removeAt = function(index) {
@@ -246,7 +247,7 @@ ol.Collection.prototype.removeAt = function(index) {
/**
* Set the element at the provided index.
* @param {number} index Index.
- * @param {*} elem Element.
+ * @param {T} elem Element.
* @api stable
*/
ol.Collection.prototype.setAt = function(index, elem) {
diff --git a/src/ol/control/controldefaults.js b/src/ol/control/controldefaults.js
index b36539fa58..b97351f410 100644
--- a/src/ol/control/controldefaults.js
+++ b/src/ol/control/controldefaults.js
@@ -15,7 +15,7 @@ goog.require('ol.control.Zoom');
* * {@link ol.control.Attribution}
*
* @param {olx.control.DefaultsOptions=} opt_options Defaults options.
- * @return {ol.Collection} Controls.
+ * @return {ol.Collection.} Controls.
* @api
*/
ol.control.defaults = function(opt_options) {
diff --git a/src/ol/featureoverlay.js b/src/ol/featureoverlay.js
index 09b7151342..683ca34dc7 100644
--- a/src/ol/featureoverlay.js
+++ b/src/ol/featureoverlay.js
@@ -33,7 +33,7 @@ ol.FeatureOverlay = function(opt_options) {
/**
* @private
- * @type {ol.Collection}
+ * @type {ol.Collection.}
*/
this.features_ = null;
@@ -104,7 +104,7 @@ ol.FeatureOverlay.prototype.addFeature = function(feature) {
/**
- * @return {ol.Collection} Features collection.
+ * @return {ol.Collection.} Features collection.
* @api
*/
ol.FeatureOverlay.prototype.getFeatures = function() {
@@ -212,7 +212,7 @@ ol.FeatureOverlay.prototype.render_ = function() {
/**
- * @param {ol.Collection} features Features collection.
+ * @param {ol.Collection.} features Features collection.
* @api
*/
ol.FeatureOverlay.prototype.setFeatures = function(features) {
diff --git a/src/ol/interaction/drawinteraction.js b/src/ol/interaction/drawinteraction.js
index efef4bb5a7..7c3d98f4bd 100644
--- a/src/ol/interaction/drawinteraction.js
+++ b/src/ol/interaction/drawinteraction.js
@@ -95,7 +95,7 @@ ol.interaction.Draw = function(options) {
/**
* Target collection for drawn features.
- * @type {ol.Collection}
+ * @type {ol.Collection.}
* @private
*/
this.features_ = goog.isDef(options.features) ? options.features : null;
diff --git a/src/ol/interaction/interactiondefaults.js b/src/ol/interaction/interactiondefaults.js
index 8e7ff11e38..4b0815a9ad 100644
--- a/src/ol/interaction/interactiondefaults.js
+++ b/src/ol/interaction/interactiondefaults.js
@@ -35,8 +35,8 @@ goog.require('ol.interaction.PinchZoom');
* should be excluded if you want a build with no vector support.
*
* @param {olx.interaction.DefaultsOptions=} opt_options Defaults options.
- * @return {ol.Collection} A collection of interactions to be used with
- * the ol.Map constructor's interactions option.
+ * @return {ol.Collection.} A collection of
+ * interactions to be used with the ol.Map constructor's interactions option.
* @api stable
*/
ol.interaction.defaults = function(opt_options) {
diff --git a/src/ol/interaction/modifyinteraction.js b/src/ol/interaction/modifyinteraction.js
index 28066d44cf..2513de9833 100644
--- a/src/ol/interaction/modifyinteraction.js
+++ b/src/ol/interaction/modifyinteraction.js
@@ -133,7 +133,7 @@ ol.interaction.Modify = function(options) {
};
/**
- * @type {ol.Collection}
+ * @type {ol.Collection.}
* @private
*/
this.features_ = options.features;
diff --git a/src/ol/interaction/selectinteraction.js b/src/ol/interaction/selectinteraction.js
index 752d17f5ac..5d40859f9b 100644
--- a/src/ol/interaction/selectinteraction.js
+++ b/src/ol/interaction/selectinteraction.js
@@ -106,7 +106,7 @@ goog.inherits(ol.interaction.Select, ol.interaction.Interaction);
/**
* Get the selected features.
- * @return {ol.Collection} Features collection.
+ * @return {ol.Collection.} Features collection.
* @api stable
*/
ol.interaction.Select.prototype.getFeatures = function() {
diff --git a/src/ol/layer/layergroup.js b/src/ol/layer/layergroup.js
index fc6edd8579..eb8ffb8c97 100644
--- a/src/ol/layer/layergroup.js
+++ b/src/ol/layer/layergroup.js
@@ -145,12 +145,12 @@ ol.layer.Group.prototype.handleLayersRemove_ = function(collectionEvent) {
/**
- * @return {ol.Collection|undefined} Collection of {@link ol.layer.Layer layers}
- * that are part of this group.
+ * @return {ol.Collection.|undefined} Collection of
+ * {@link ol.layer.Layer layers} that are part of this group.
* @observable
*/
ol.layer.Group.prototype.getLayers = function() {
- return /** @type {ol.Collection|undefined} */ (this.get(
+ return /** @type {ol.Collection.|undefined} */ (this.get(
ol.layer.GroupProperty.LAYERS));
};
goog.exportProperty(
@@ -160,7 +160,7 @@ goog.exportProperty(
/**
- * @param {ol.Collection|undefined} layers Collection of
+ * @param {ol.Collection.|undefined} layers Collection of
* {@link ol.layer.Layer layers} that are part of this group.
* @observable
*/
diff --git a/src/ol/map.js b/src/ol/map.js
index 1d47c533cb..f4760cef4f 100644
--- a/src/ol/map.js
+++ b/src/ol/map.js
@@ -296,7 +296,7 @@ ol.Map = function(options) {
this.registerDisposable(mouseWheelHandler);
/**
- * @type {ol.Collection}
+ * @type {ol.Collection.}
* @private
*/
this.controls_ = optionsInternal.controls;
@@ -308,13 +308,13 @@ ol.Map = function(options) {
this.deviceOptions_ = optionsInternal.deviceOptions;
/**
- * @type {ol.Collection}
+ * @type {ol.Collection.}
* @private
*/
this.interactions_ = optionsInternal.interactions;
/**
- * @type {ol.Collection}
+ * @type {ol.Collection.}
* @private
*/
this.overlays_ = optionsInternal.overlays;
@@ -653,7 +653,7 @@ ol.Map.prototype.getCoordinateFromPixel = function(pixel) {
/**
- * @return {ol.Collection} Controls.
+ * @return {ol.Collection.} Controls.
* @api stable
*/
ol.Map.prototype.getControls = function() {
@@ -662,7 +662,7 @@ ol.Map.prototype.getControls = function() {
/**
- * @return {ol.Collection} Overlays.
+ * @return {ol.Collection.} Overlays.
* @api stable
*/
ol.Map.prototype.getOverlays = function() {
@@ -676,7 +676,7 @@ ol.Map.prototype.getOverlays = function() {
* associated with the map.
*
* Interactions are used for e.g. pan, zoom and rotate.
- * @return {ol.Collection} {@link ol.interaction.Interaction Interactions}.
+ * @return {ol.Collection.} Interactions.
* @api stable
*/
ol.Map.prototype.getInteractions = function() {
@@ -701,7 +701,7 @@ goog.exportProperty(
/**
* Get the collection of layers associated with this map.
- * @return {ol.Collection|undefined} Layers.
+ * @return {ol.Collection.|undefined} Layers.
* @api stable
*/
ol.Map.prototype.getLayers = function() {
@@ -856,8 +856,8 @@ ol.Map.prototype.handleMapBrowserEvent = function(mapBrowserEvent) {
this.focus_ = mapBrowserEvent.coordinate;
mapBrowserEvent.frameState = this.frameState_;
var interactions = this.getInteractions();
- var interactionsArray = /** @type {Array.} */
- (interactions.getArray());
+ goog.asserts.assert(goog.isDef(interactions));
+ var interactionsArray = interactions.getArray();
var i;
if (this.dispatchEvent(mapBrowserEvent) !== false) {
for (i = interactionsArray.length - 1; i >= 0; i--) {
@@ -1146,7 +1146,7 @@ ol.Map.prototype.removeInteraction = function(interaction) {
ol.Map.prototype.removeLayer = function(layer) {
var layers = this.getLayerGroup().getLayers();
goog.asserts.assert(goog.isDef(layers));
- return /** @type {ol.layer.Base|undefined} */ (layers.remove(layer));
+ return layers.remove(layer);
};
@@ -1377,12 +1377,12 @@ ol.Map.prototype.unskipFeature = function(feature) {
/**
- * @typedef {{controls: ol.Collection,
+ * @typedef {{controls: ol.Collection.,
* deviceOptions: olx.DeviceOptions,
- * interactions: ol.Collection,
+ * interactions: ol.Collection.,
* keyboardEventTarget: (Element|Document),
* logos: Object,
- * overlays: ol.Collection,
+ * overlays: ol.Collection.,
* rendererConstructor:
* function(new: ol.renderer.Map, Element, ol.Map),
* values: Object.}}