Don't define functions in the prototype

If `VOID` is used, TypeScript is not able to figure out what the function parameters are.

Before:
```
$ npx tsc | wc -l
    1188
```

After:
```
$ npx tsc | wc -l
    1169
```
This commit is contained in:
Frederic Junod
2018-09-18 13:57:28 +02:00
parent 5910e4d207
commit 7cb85fa975
7 changed files with 75 additions and 76 deletions

View File

@@ -7,7 +7,6 @@ import Observable from '../Observable.js';
import TileState from '../TileState.js';
import {listen} from '../events.js';
import EventType from '../events/EventType.js';
import {FALSE, VOID} from '../functions.js';
import SourceState from '../source/State.js';
class LayerRenderer extends Observable {
@@ -55,6 +54,18 @@ class LayerRenderer extends Observable {
);
}
/**
* @abstract
* @param {import("../coordinate.js").Coordinate} coordinate Coordinate.
* @param {import("../PluggableMap.js").FrameState} frameState Frame state.
* @param {number} hitTolerance Hit tolerance in pixels.
* @param {function(this: S, (import("../Feature.js").default|import("../render/Feature.js").default), import("../layer/Layer.js").default): T} callback Feature callback.
* @param {S} thisArg Value to use as `this` when executing `callback`.
* @return {T|void} Callback result.
* @template S,T
*/
forEachFeatureAtCoordinate(coordinate, frameState, hitTolerance, callback) {}
/**
* @return {import("../layer/Layer.js").default} Layer.
*/
@@ -74,6 +85,15 @@ class LayerRenderer extends Observable {
}
}
/**
* @param {import("../coordinate.js").Coordinate} coordinate Coordinate.
* @param {import("../PluggableMap.js").FrameState} frameState Frame state.
* @return {boolean} Is there a feature at the given coordinate?
*/
hasFeatureAtCoordinate(coordinate, frameState) {
return false;
}
/**
* Load the image if not already loaded, and register the image change
* listener if needed.
@@ -218,25 +238,4 @@ class LayerRenderer extends Observable {
}
}
/**
* @param {import("../coordinate.js").Coordinate} coordinate Coordinate.
* @param {import("../PluggableMap.js").FrameState} frameState Frame state.
* @param {number} hitTolerance Hit tolerance in pixels.
* @param {function(this: S, (import("../Feature.js").default|import("../render/Feature.js").default), import("../layer/Layer.js").default): T} callback Feature callback.
* @param {S} thisArg Value to use as `this` when executing `callback`.
* @return {T|void} Callback result.
* @template S,T
*/
LayerRenderer.prototype.forEachFeatureAtCoordinate = VOID;
/**
* @param {import("../coordinate.js").Coordinate} coordinate Coordinate.
* @param {import("../PluggableMap.js").FrameState} frameState Frame state.
* @return {boolean} Is there a feature at the given coordinate?
*/
LayerRenderer.prototype.hasFeatureAtCoordinate = FALSE;
export default LayerRenderer;

View File

@@ -6,7 +6,7 @@ import Disposable from '../Disposable.js';
import {listen, unlistenByKey} from '../events.js';
import EventType from '../events/EventType.js';
import {getWidth} from '../extent.js';
import {TRUE, VOID} from '../functions.js';
import {TRUE} from '../functions.js';
import {visibleAtResolution} from '../layer/Layer.js';
import {shared as iconImageCache} from '../style/IconImageCache.js';
import {compose as composeTransform, invert as invertTransform, setFromArray as transformSetFromArray} from '../transform.js';
@@ -46,6 +46,13 @@ class MapRenderer extends Disposable {
}
/**
* @abstract
* @param {import("../render/EventType.js").default} type Event type.
* @param {import("../PluggableMap.js").FrameState} frameState Frame state.
*/
dispatchRenderEvent(type, frameState) {}
/**
* Register layer renderer constructors.
* @param {Array<import("./Layer.js").default>} constructors Layer renderers.
@@ -283,6 +290,13 @@ class MapRenderer extends Disposable {
}
}
/**
* @abstract
* Render.
* @param {?import("../PluggableMap.js").FrameState} frameState Frame state.
*/
renderFrame(frameState) {}
/**
* @param {import("../PluggableMap.js").FrameState} frameState Frame state.
* @protected
@@ -317,20 +331,6 @@ function expireIconCache(map, frameState) {
}
/**
* Render.
* @param {?import("../PluggableMap.js").FrameState} frameState Frame state.
*/
MapRenderer.prototype.renderFrame = VOID;
/**
* @param {import("../render/EventType.js").default} type Event type.
* @param {import("../PluggableMap.js").FrameState} frameState Frame state.
*/
MapRenderer.prototype.dispatchRenderEvent = VOID;
/**
* @param {import("../layer/Layer.js").State} state1 First layer state.
* @param {import("../layer/Layer.js").State} state2 Second layer state.