Sé que la pregunta ya está cerrada, pero la encontré buscando la misma excepción TypeScriptException, tal vez alguien más respondió a esta pregunta buscando este problema.
El problema radica en la falta de escritura de TypeScript:
var coordinates = outerElement[0].getBBox();
Arroja The property 'getBBox' does not exist on value of type 'HTMLElement'.
La forma más fácil es escribir explícitamente la variable como any
var outerHtmlElement: any = outerElement[0];
var coordinates = outerHtmlElement.getBBox();
Editar, finales de 2016
Dado que el operador de conversión preferido de TypeScript 1.6 es asesas líneas se pueden dividir en elegantes:
let coordinates = (outerElement[0] as any).getBBox();
Otras soluciones
Por supuesto, si desea hacerlo bien, lo que a veces es una exageración, puede:
- Crear una interfaz propia que simplemente se extienda
HTMLElement
- Introducir su propia escritura que se extiende
HTMLElement
HTMLElementy tenga lagetBBoxpropiedad adicional . De esa manera, aún se completa el código en las otras propiedades.getBBox¿hay algún método para lanzarlo? le gustaría saber el tipo degetBBox?getBBoxestuviera enHTMLElementtipo, podría lanzarle el objetovar typedElement = <HTMLElement> outerHtmlElement;.var coordinates = (<any>outerElement[0]).getBBox();La solución rápida y sucia es emitir explícitamente a
anyLa "ventaja" es que, siendo el elenco explícito, esto se compilará incluso con el
noImplicitAnyconjunto de banderas.La solución adecuada es actualizar el archivo de definición de tipings.
Tenga en cuenta que, cuando convierte una variable a
any, opta por no verificar el tipo de esa variable.Dado que estoy en modo de descargo de responsabilidad, la transmisión doble a través de
anyuna nueva interfaz puede ser útil en situaciones en las queaún así, todavía quieres algún tipo de escritura.
Supongamos que desea parchear la definición de una instancia
yde tipoOrginalDefcon una nueva propiedadxde tiponumber:fuente
También puedes usar el siguiente truco:
y.x = "some custom property"//gives typescript errory["x"] = "some custom property"//no errorsTenga en cuenta que para acceder
xy no obtener un error de mecanografía nuevamente, debe escribirlo asíy["x"], noy.x. Desde esta perspectiva, las otras opciones son mejores.fuente
:any?Hay varias formas de manejar este problema. Si este objeto está relacionado con alguna biblioteca externa, la mejor solución sería encontrar el archivo de definiciones real (gran repositorio aquí ) para esa biblioteca y hacer referencia a ella, por ejemplo:
Por supuesto, esto no se aplica en muchos casos.
Si desea 'anular' el sistema de tipos, intente lo siguiente:
Esto le permitirá hacer las llamadas que desee
var y.fuente
/// <reference path="/path/to/jquery.d.ts" />con la etiqueta de cierre automático al finaljquery.d.tsarchivo en mi proyectonpm install -g tsdentoncestsd install jqueryCuando TypeScript cree que la propiedad "x" no existe en "y" , siempre puede convertir "y" en "any", lo que le permitirá llamar a cualquier cosa (como "x") en "y".
Teoría
Ejemplo del mundo real
Recibí el error "TS2339: la propiedad 'nombre' no existe en el tipo 'Función'" para este código:
Entonces lo arreglé con:
fuente
Tenía un problema en Angular2, estaba usando el almacenamiento local para guardar algo y no me lo permitió.
Soluciones:
yo tenía
localStorage.city -> error -> Property 'city' does not exist on type 'Storage'.Como arreglarlo:
fuente
<any>-(<any>localStorage).city.Una solución rápida donde nada más funciona:
No es una buena práctica, pero proporciona una solución sin necesidad de desactivar el literal sin cadenas
fuente
Sé que ahora es 2020, pero no pude ver una respuesta que satisficiera la parte de "ignorar" de la pregunta. Resulta que puedes decirle a TSLint que haga eso usando una directiva;
Normalmente esto arrojaría un error, indicando que 'someProp no existe en el tipo'. Con el comentario, ese error desaparece.
Esto detendrá cualquier error que se genere al compilar y también debería evitar que su IDE se queje de usted.
fuente
En mi proyecto particular no pude hacerlo funcionar, y lo usé
declare var $;. No es una solución limpia / recomendada, no reconoce las variables JQuery, pero no tuve errores después de usar eso (y tuve que hacerlo para que mis compilaciones automáticas tuvieran éxito).fuente
Pude superar esto en mecanografiado usando algo como:
Esta parecía ser la única forma en que podía usar los valores dentro de X como claves para el mapa Y y compilar.
fuente