2016-12-19 3 views
2

Я рефакторинг некоторых .js-файлов в Typcript.Преобразование метода jQuery .map() в TypeScript

Ссылка https://github.com/DefinitelyTyped/DefinitelyTyped/tree/types-2.0/jquery для решения методов jQuery.

Исходный код имеет несколько экземпляров кода похож на это:

$("#id").map((ev)=> { 
    return $(ev.target).val(); 
}) 

Использование предполагает, что карта принимает обратный вызов, с ev событие (с целевым свойством), однако jQuery.d.ts определяет метод следующим образом:

map(callback: (index: number, domElement: Element) => any): JQuery; 

в результате Машинопись компилятор barfs, говоря

«свойство цели не существует на номера типа»

Соответствующая версия JQuery является 1.7.2

EDIT

После ответа от @FunStuff, я изменил код следующим образом:

.map((i, el)=> { 
    return $(el).val(); 
}) 

Какой решар нравится. Я все еще запутался относительно того, как эта подпись метода решена в Vanilla JS?

ответ

3

Потому что первым аргументом является индекс и его тип - номер.

$("#id").map((index, element) => { 
    console.log(element); 
}); 

карту (обратный вызов: (индекс: номер, DOMElement: Элемент) => любой): JQuery;

И посмотрите, что второй аргумент является текущим элементом DOM, а не событием.

Теперь это должно сработать.

+0

Это работает, см. Мое редактирование, которое включает второй запрос. –

+0

Я не уверен, что я действительно понимаю второй вопрос. можете ли вы объяснить больше, пожалуйста? – Bazinga

+0

Исходный код (return $ (ev.target) .val();) должен был работать со стандартным jQuery (я предполагаю), но как? –

Смежные вопросы