La funzione assegnata dal codice a $.modal
è, presumo, incompleta. Tuttavia, poiché si sta specificando la definizione dei tipi, proverò a rispondere comunque.
Quindi, per prima cosa, se non lo si è già fatto: scaricare jquery.d.ts from codeplex e fare riferimento al codice come indicato di seguito. Vi fornirà le dichiarazioni di tipo per jQuery, che sono molto utili quando si lavora con la libreria. Permetterà inoltre di definire i membri che dovrebbero essere oggetti jQuery.
///<reference path="jquery.d.ts" />
Per fare un esempio, dare un'occhiata a IModal
che è un'interfaccia con 4 membri jQuery (ho preso alcune ipotesi con quali tipi si voleva utilizzare sugli altri membri - potrebbero non essere ciò che si desidera) :
interface IModal {
content : string;
form : HTMLFormElement;
$form : JQuery;
$message: JQuery;
$modal : JQuery;
$submits: JQuery;
href : string;
}
la seconda dichiarazione di interfaccia, JQueryStatic
, semplicemente dichiara un altro membro static, che sarà accessibile sull'oggetto $
(vedi nota in calce), perché $
implementa JQueryStatic
nel file jquery.d.ts.
interface JQueryStatic {
modal : any;
};
Con questo posto è ora possibile creare l'oggetto modale con informazioni sul tipo esplicito che è fornito dall'interfaccia IModal
che implementa:
var modal : IModal = {
content : '',
form : null,
$form : null,
$message: null,
$modal : null,
$submits: null,
href : ''
}
E è possibile assegnare la funzione a $ .modal a causa della JQueryStatic
add on:
$.modal = function (options) {
var settings = $.extend({}, $.modal.defaults, options),
root = getModalDiv(),
getModalDiv = function() {
var modal = $('#modal');
return modal;
};
...
})(jQuery);
Con questo in luogo, e se si corregge che l'assegnazione, la seguente riga dovrebbe ora OK:
modal.$form = modal.$modal.find('.form');
Nota: le mie esperienze con l'aggiunta di membri di interfacce esistenti è stato incerto nella migliore delle ipotesi - spesso il compilatore non prenderli per qualsiasi ragione. Trovo che questo sia più probabile man mano che la tua base di codice cresce, quindi è difficile isolare la causa esatta. Solo qualcosa da tenere d'occhio.
Perché si inizializza 'modal. $ Modal' come stringa, se non lo è? L'intero punto di TypeScript è di avere un sistema di tipo più severo, se non sbaglio. –
@Felix - Ma questo è il mio problema. Non sono sicuro di cosa inizializzare modal. $ Modal to. Voglio che tenga un oggetto jQuery ma non riesco a scoprire come farlo. –
TBH Non ho familiarità con TypeScript, ma sicuramente non inizializzerò una proprietà che dovrebbe contenere un oggetto jQuery con una stringa vuota. Forse questo aiuta: http://stackoverflow.com/questions/12719529/using-jquery-plugin-in-typescript –