A guarded version of the TypeScript type definitions for HERE Maps.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
config
src
test/unit
.gitignore
.travis.yml
LICENSE
README.md
gruntfile.js
package-lock.json
package.json

README.md

here-maps-type-guards

A guarded version of the TypeScript type definitions for HERE Maps.

tests dependencies version

This module provides TypeScript type guards which assure TypeScript that a value of type unknown is actually a HERE Maps module. It can be thought of as a scoped version of the @types/heremaps module.

Installation

This module is available as npm package. It can be installed with the following command:

npm install here-maps-type-guards

It is not required to include any external type definition files in the tsconfig file in order to use here-maps-type-guards.

Guards

This module provides a guard for each of the submodules available from HERE Maps.

The guards are useful to ensure type safety and to do runtime checks at the same time.

Additionally the globally available H object which HERE Maps attaches to the window is also exported. It is of type unknown and needs to be narrowed with at least one guard before it can be used.

isHereMaps

This is a guard which checks the availability of the core module.

import { H, isHereMaps } from 'here-maps-type-guards';

if (isHereMaps(H)) {
    // H is not unknown anymore.
}

isHereMapsWithClusteringNamespace

This is a guard which checks the availability of the clustering module which includes a check for the core module.

import { H, isHereMapsWithClusteringNamespace } from 'here-maps-type-guards';

if (isHereMapsWithClusteringNamespace(H)) {
    // H is not unknown anymore.
    // H.clustering is also defined.
}

isHereMapsWithDataNamespace

This is a guard which checks the availability of the data module which includes a check for the core module.

import { H, isHereMapsWithDataNamespace } from 'here-maps-type-guards';

if (isHereMapsWithDataNamespace(H)) {
    // H is not unknown anymore.
    // H.data is also defined.
}

isHereMapsWithMapEventsNamespace

This is a guard which checks the availability of the mapevents module which includes a check for the core module.

import { H, isHereMapsWithMapEventsNamespace } from 'here-maps-type-guards';

if (isHereMapsWithMapEventsNamespace(H)) {
    // H is not unknown anymore.
    // H.mapevents is also defined.
}

isHereMapsWithServiceNamespace

This is a guard which checks the availability of the service module which includes a check for the core module.

import { H, isHereMapsWithServiceNamespace } from 'here-maps-type-guards';

if (isHereMapsWithServiceNamespace(H)) {
    // H is not unknown anymore.
    // H.service is also defined.
}

Motivation

I also wrote a blog post which explains why I actually created this module.