typescript - Fel TS2339: Egenskapen 'Connection' finns inte på typen 'Navigator'


mycket enkelt problem

Jag försöker med Angular 2 och Ionic 2.

Använde följande kod -

huvudfil -

/// <reference path="../../../node_modules/@angular/platform-browser/src/browser.d.ts" />


import {Component} from '@angular/core';
import {Platform} from 'ionic-angular';
import {NavController} from 'ionic-angular';
import {Network} from 'ionic-native'

@Component({
  templateUrl: 'build/pages/items-map/items-map.html'
})
export class ItemsMap {

  constructor(private platform : Platform) {
    console.log(navigator.Connection);
  }

}

Nu när jag bygger projektet med gulp build får jag -

Fel TS2339: Egenskapen 'Connection' finns inte på typen 'Navigator'.

Någon hjälp med det här? Jag vet att det finns några fler liknande problem registrerade, men ingen av dem har några definitiva svar

Svar #1

Du kan skapa dina egna typdefinitioner för Network Information API baserat på W3C-specifikationsutkastet.

Utkastet till Community Group Report 11 maj 2020 användes för utdraget nedan, med saveData-attributet från Utkastet till Community Group Report 12 januari 2022.

// network-information-api.d.ts
declare interface Navigator extends NavigatorNetworkInformation {}
declare interface WorkerNavigator extends NavigatorNetworkInformation {}
declare interface NavigatorNetworkInformation {
  readonly connection?: NetworkInformation
}
type Megabit = number
type Millisecond = number
type EffectiveConnectionType = '2g' | '3g' | '4g' | 'slow-2g'
type ConnectionType =
  | 'bluetooth'
  | 'cellular'
  | 'ethernet'
  | 'mixed'
  | 'none'
  | 'other'
  | 'unknown'
  | 'wifi'
  | 'wimax'
interface NetworkInformation extends EventTarget {
  readonly type?: ConnectionType
  readonly effectiveType?: EffectiveConnectionType
  readonly downlinkMax?: Megabit
  readonly downlink?: Megabit
  readonly rtt?: Millisecond
  readonly saveData?: boolean
  onchange?: EventListener
}

Inbyggt stöd för Network Information API i TypeScript lades till i #44842 med begränsade attribut.

Svar #2

Detta är ett TypeScript-definition problem. Det behövs TypeScript-definition för pluginen. Använd npm för att installera det.

npm install @types/cordova-plugin-network-information --save

Om det inte fungerar, försök med Network.type istället för navigator.connection.

Relaterade artiklar