Umgang mit Warnungen für proprietäre / benutzerdefinierte Eigenschaften von integrierten Objekten in TypeScript

StackOverflow https://stackoverflow.com//questions/12703266

  •  13-12-2019
  •  | 
  •  

Frage

Ich benutze Personas, die auf dem beruhen eigentum navigator.id.Da diese Eigenschaft nicht Standard ist, generiert der TypeScript-Compiler die folgende Warnung:

$ tsc home.ts --out my_ts_generated_code.js
/Users/..../home.ts(27,18): The property 'id' does not exist on value of type 'Navigator'

Aber die .die JS-Datei wurde erfolgreich generiert und wird im FF15-Browser ohne Warn- / Fehlermeldung ausgeführt.
Ich füge auch eine Polyfüllung für bei navigator.id, wie in der Dokumentation angegeben, also navigator.id wird definitiv in jedem Browser verfügbar sein.

Könnte mir jemand vorschlagen, wie ich mit dieser Warnung umgehen soll?

Index.HTML

<!-- some HTML omit above -->
<script src="https://login.persona.org/include.js"></script>
<script src="my_ts_generated_code.js"></script>
<button class="btn" id="signin">Sign in</button>
<button class="btn" id="signout">Sign out</button>
<!-- some HTML omit below -->

Startseite.zs

declare var $;

class Student {
    fullname : string;
    constructor(public firstname, public middleinitial, public lastname) {
        this.fullname = firstname + " " + middleinitial + " " + lastname;
    }
}

interface Person {
    firstname: string;
    lastname: string;
}

function greeter(person : Person) {
    return "Hello, " + person.firstname + " " + person.lastname;
}

var user = new Student("Jane", "M.", "User");

$(function() {
    $('#signin').on('click', function(e) {
        e.preventDefault();
        navigator.id.request();
    });

    $('#signout').on('click', function(e) {
        e.preventDefault();
        navigator.id.logout();
    });
    //document.body.innerHTML = greeter(user);
});
War es hilfreich?

Lösung

1) Sie können Navigator Prop neu interpretieren.

(<any>navigator).id.request();

2) Sie können id prop selbst deklarieren

mein Unternehmen.lib.d.t.s

interface Navigator {
  id: any
}

App.zs

navigator.id.request();

sehen Sie dieses Video http://channel9.msdn.com/posts/Anders-Hejlsberg-Introducing-TypeScript/ Dort erzählt Anders als jQuery.Benutzeroberfläche fügt jQuery neue Methoden hinzu (siehe 46 Minuten)

Andere Tipps

Fügen Sie Schecks wie hinzu if(navigator.id != null && typeof navigator.id != 'undefined') vor stmt wo navigator.id wird verwiesen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top