Comment gérer les avertissements pour les propriétés propriétaires/personnalisées des objets intégrés dans TypeScript
-
13-12-2019 - |
Question
J'utilise Personas qui s'appuie sur le propriété exclusive navigator.id
.Cette propriété n'étant pas standard, le compilateur TypeScript génère l'avertissement suivant :
$ 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'
Mais le fichier .js est généré avec succès et s'exécute sur le navigateur FF15 sans aucun message d'avertissement/d'erreur.
J'inclus également un polyfill pour navigator.id
, comme indiqué dans la documentation, donc navigator.id
sera certainement disponible dans tous les navigateurs.
Quelqu'un pourrait-il me suggérer comment gérer cet avertissement ?
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 -->
maison.ts
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);
});
La solution
1) Vous pouvez réinterpréter Navigator Prop.
(<any>navigator).id.request();
2) Vous pouvez déclarer ID
monentreprise.lib.d.ts
interface Navigator {
id: any
}
app.ts
navigator.id.request();
voir cette vidéo http://channel9.msdn.com/posts/Anders-Hejlsberg-Introducing-TypeScript/ Là, Anders dit que jQuery.UI ajoute de nouvelles méthodes à jQuery (voir 46 min)
Autres conseils
Ajoutez des chèques comme if(navigator.id != null && typeof navigator.id != 'undefined')
avant stmt où navigator.id est référencé