Не удается использовать `$(document).ready` в TypeScript

#jquery #typescript

#jquery #typescript

Вопрос:

Использование $(document) в TypeScript выдает ошибку Supplied parameters do not match any signature of call target.

экран ошибки

Я использую TypeScript 3.1, jQuery 3.3.1 и @types / jQuery 3.3.29.

$(document) Устарел, и я должен использовать что-то другое, или это ошибка в файле определения типа?

РЕДАКТИРОВАТЬ: все тело этого файла TypeScript в основном «Привет, мир!».

 $(document).ready(() => {
    console.log("Hello World!");
});
  

Комментарии:

1. Вызываете ли вы какую-либо функцию с параметрами?

2. попробуйте: jQuery(document).ready(()

3. jQuery(document) выдает ту же ошибку.

Ответ №1:

$(document).ready(handler) имеет два функционально эквивалентных варианта, первый — $().ready(handler) , а второй — прямой $(handler) .

В jQuery 3.0 первые два были устаревшими, остался только $(handler) . Официальное обоснование таково:

Это связано с тем, что выбор не влияет на поведение .ready() метода, что неэффективно и может привести к неверным предположениям о поведении метода.

Файлы определений TypeScript просто не включают устаревший синтаксис, который все еще работает ради обратной совместимости. Ваш скрипт должен выглядеть следующим образом:

 $(() => {
    console.log("Hello World!");
});