Cómo manejar advertencias para propiedades propietarias/personalizadas de objetos integrados en TypeScript

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

  •  13-12-2019
  •  | 
  •  

Pregunta

Estoy usando Personas que se basan en el propiedad propietaria navigator.id.Dado que esta propiedad no es estándar, el compilador de TypeScript genera la siguiente advertencia:

$ 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'

Pero el archivo .js se genera correctamente y se ejecuta en el navegador FF15 sin ningún mensaje de advertencia/error.
También incluyo un polyfill para navigator.id, según las instrucciones de la documentación, por lo que navigator.id Definitivamente estará disponible en todos los navegadores.

¿Alguien podría sugerirme cómo lidiar con esta advertencia?

índice.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 -->

casa.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);
});
¿Fue útil?

Solución

1) Puede reinterpretar el Prop.

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

2) Puede declarar su identificación a sí mismo

miempresa.lib.d.ts

interface Navigator {
  id: any
}

aplicación.ts

navigator.id.request();

Mira este video http://channel9.msdn.com/posts/Anders-Hejlsberg-Introduciendo-TypeScript/ Allí Anders cuenta como jQuery.UI agrega nuevos métodos a jQuery (ver 46 min)

Otros consejos

Agregue cheques como if(navigator.id != null && typeof navigator.id != 'undefined') antes de stmt donde se hace referencia a navigator.id

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top