Solo estoy usando una línea de jQuery en mi aplicación:
$("div.printArea").printArea();
Pero esto me está dando un error de TypeScript:
¿La propiedad 'printArea' no existe en el tipo JQuery?
¿Alguien puede decirme cómo puedo evitar que aparezca este error?
jquery
typescript
Alan2
fuente
fuente
Error:(44, 23) TS2339: Property 'printArea' does not exist on type 'ElementFinder'.
interface JQuery
camino en un módulo externo y define un parámetro de función como un tipo JQuery e intenta llamarlo desde otro archivo, TypeScript se quejará de que hay dos tipos llamados JQuery que no están relacionados.declare global { ... }
la declaración de interfaz.Creo que esta es la solución más legible:
($("div.printArea") as any).printArea();
fuente
Puedes lanzarlo a
(<any>$('.selector') ).function();
Ej: selector de fecha inicializar usando jquery
(<any>$('.datepicker') ).datepicker();
fuente
Para su ejemplo, agregaría esto:
interface JQuery{ printArea():void; }
Editar: oops, basarat es correcto a continuación. No estoy seguro de por qué pensé que se estaba compilando, pero actualicé esta respuesta.
fuente
$.inviewport(el)
Caso de$('selector').printArea
$('selector').printArea
compila? No lo creo.$.printArea
compilará sin embargo. Usted ha sido muy amable por lo que ninguna ofensa ejecutados o dispuestos :)Dado que printArea es un complemento de jQuery, no está incluido en jquery.d.ts.
Necesita crear un archivo de definición jquery.printArea.ts.
Si crea un archivo de definición completo para el complemento, es posible que desee enviarlo a DefinitelyTyped .
fuente
También puedes escribirlo así:
let elem: any; elem = $("div.printArea"); elem.printArea();
fuente
También puede usar la sintaxis de ignorar en lugar de usar (o mejor la notación 'como cualquier'):
// @ts-ignore $("div.printArea").printArea();
fuente