network-information-types
Version:
Type definitions for Network Information API
78 lines (52 loc) • 2.08 kB
Markdown
[](https://badge.fury.io/js/network-information-types)
Type definition for [Network Information API](https://developer.mozilla.org/en-US/docs/Web/API/Network_Information_API)
This is a temporary solution until TypeScript adds support for this API as built-in types. See https://github.com/Microsoft/TypeScript/issues/27186 .
- Install Package via npm
- Edit your tsconfig.json
- Now you get `navigator.connection` with its type!
```shell
$ yarn add -D network-information-types
```
`network-information-types` is a _ambient_ types that modify global `navigator` type, so **it MUST be added in `types`**.
Package names in `types` array are resolved with `typeRoots`. By default, `typesRoots` is just `./node_modules/@types`.
To resolve `network-information-types` package, add the relative path directly as below.
```json
{
"compilerOptions": {
...
"types": [
"./node_modules/network-information-types"
]
},
}
```
Now you can access `navigator.connection` property as `NetworkInformation` object.
`navigator.connection` and its properties are all optional because browser support for each is separated.
See https://developer.mozilla.org/en-US/docs/Web/API/NetworkInformation#Browser_compatibility .
```ts
// Example: http://wicg.github.io/netinfo/#example-1
if (navigator.connection) {
// Get the connection type.
const type: ConnectionType = navigator.connection.type;
// Get an upper bound on the downlink speed of the first network hop
const max: number = navigator.connection.downlinkMax;
const changeHandler = (e: Event) => {
// Handle change to connection here.
};
// Register for event changes.
navigator.connection.onchange = changeHandler;
// Alternatively.
navigator.connection.addEventListener('change', changeHandler);
}
```
Suguru Inatomi: https://github.com/lacolaco
- Twitter: https://twitter.com/laco2net
MIT