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

18

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

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

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

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

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

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

Пример

var logonDlg = $("logonDialog");

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

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

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

    
задан mvbaffa 03.10.2012 в 16:45
источник

4 ответа

5

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

    
ответ дан joshuapoehls 03.10.2012 в 16:50
источник
  • Спасибо всем вам. Я попробую это скоро. –  mvbaffa 04.10.2012 в 01:42
  • это не так в vs2013? Строительство останавливается, и я не могу запустить свой проект. –  daniel 06.08.2013 в 16:49
22

Если вы хотите остановить ошибки, не делая лишней дополнительной работы, вы можете «объявить» объекты из вашего 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.
    
ответ дан Ryan Cavanaugh 03.10.2012 в 17:18
источник
8

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

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

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

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

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

Привет     

ответ дан mvbaffa 05.10.2012 в 19:02
источник
4

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

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

    
ответ дан CodingWithSpike 30.03.2015 в 14:28
источник