Подтвердить что ты не робот

Вызов JavaScript непосредственно из TypeScript

Я только что загрузил документацию TypeScript. У меня есть некоторые классы JavaScript, и я хотел бы создать и использовать этот класс в тестовом приложении TypeScript

Как я могу вызвать функцию JavaScript из включенного JavaScript из TypeScript. Я не хочу создавать файл "d.ts". Просто чтобы создать мои классы, вызовите его методы, получите доступ к его свойствам.

Как это сделать?


Я пытаюсь использовать kendoUI с TypeScript.

Например, чтобы показать окно, которое я должен сделать:

  • Представьте HTML для представления содержимого окна. У меня есть div с id logonDialog. Этот div
    изначально скрыта;
  • Я создаю окно: logonDlg.kendoWindow(logOnParams);
  • Затем, используя jQuery, я показываю div: используя logonDlg.show();

Пример

var logonDlg = $("logonDialog");

if (!logonDlg.data("kendoWindow")) {
   logonDlg.kendoWindow(logOnParams);
   logonDlg.show();
}

Он работает нормально. JS генерируется, как я хочу, но я получаю сообщение об ошибке, поскольку свойство "kendoWindow" не существует по значению типа "JQuery".

Как отключить эту ошибку. Я не мог сделать, что сказал Райан, чтобы работать.

4b9b3361

Ответ 1

Вы просто это сделаете. TypeScript не остановит вас. Вы увидите предупреждения на выходе компилятора, но tsc будет генерировать ваш JS файл просто отлично.

Ответ 2

Если вы хотите остановить ошибки, не делая лишней дополнительной работы, вы можете "объявить" объекты из вашего JS-кода:

declare var w; // implicit type here is 'any'
// (later, anywhere in your file...)
var x = new w(); // you can do whatever you want with w now without getting errors
w.x = 4; // etc.

Ответ 3

Существует лучшее решение. Просто добавьте jQuery logonDlg в любой из них:

(<any>logonDlg).kendoWindow(logOnParams);

Код будет немного другим, но будет работать одинаково.

  • Без генерируемого кода генерируется такой код: logonDlg.kendoWindow(logOnParams);
  • С литой будет выглядеть так: (logonDlg).kendoWindow(logOnParams);

Оба работают нормально.

Привет

Ответ 4

В этом конкретном случае вы можете просто включить Kendo UI TypeScript определения, которые предоставляет Telerik.

(Я понимаю, что этот вопрос был задан назад, когда определения TS, вероятно, еще не существовало, но хотели добавить эту деталь для людей, которые сталкиваются с этим вопросом в будущем.)