2014-01-29 7 views
1

Только что узнал о TypScript, и после беспорядка с ним я решил, что хочу проверить его с помощью JQuery и OMG, я не могу заставить его работать.Импорт JQuery в машинописный текст

инструкции выглядит довольно просто: Получить jquery.d.ts -> Добавьте его в проект -> Добавить /// <reference path="jquery.d.ts" />

Это, кажется, работает достаточно хорошо, автозаполнение и все. Единственная проблема заключается в том, что код не будет компилироваться. Это ошибка, я получаю: 0x800a1391 - JavaScript runtime error: '$' is undefined

Это является Jquery.d.ts, что я использую: https://github.com/borisyankov/DefinitelyTyped/blob/master/jquery/jquery.d.ts

И вот мой код:

/// <reference path="jquery.d.ts" /> 
class Greeter { 
element: HTMLElement; 
span: HTMLElement; 
img: HTMLElement; 
timerToken: number; 

constructor(element: HTMLElement) { 
    this.element = element; 
    this.element.innerHTML += "The time is: "; 
    this.span = document.createElement('span'); 
    this.img = document.createElement('img'); 
    this.img.setAttribute('src', "http://static5.businessinsider.com/image/52447d4becad0431644a8db2-1200/sean-raiger-of-sacramento-won-silver-for-the-partial-imperial-beard.jpg"); 
    this.img.setAttribute('style', "height:500px;width:500px;"); 
    this.element.appendChild(this.span); 
    this.span.innerText = new Date().toUTCString(); 
    this.element.appendChild(this.img); 
    $('img').click((event: JQueryEventObject) => { this.span.innerHTML = "aaaaaa"}); 
    //$(this.img).click(ActOnClick($(this.img))); 
} 

start() { 
    this.timerToken = setInterval(() => this.span.innerHTML = new Date().toUTCString(), 500); 
} 

stop() { 
    clearTimeout(this.timerToken); 
} 

} 


window.onload =() => { 
    var el = document.getElementById('content'); 
    var greeter = new Greeter(el); 
    greeter.start(); 
}; 
+1

Вам нужно будет включить текущую 'jquery.js' в вашу HTML-страницу в тег' script'. '.d.ts' - это только файл определения интерфейса, он не содержит функции jQuery. – WiredPrairie

+0

Ну, это позор. Но добавление ' \t ' before '' in default.html не решает проблему – Axel

+1

Может ли вы уточните - это во время выполнения или время компиляции? Ошибка предполагает время выполнения, но вы сказали, что это было во время компиляции. – WiredPrairie

ответ

2

Убедитесь, что вы» ве включен скрипт для JQuery на вашей HTML странице:

<script src="/assets/jQuery.min.js"></script> 

в .d.ts файлы служат только в качестве определения для JQuery, а не фактические осущ ementation. Если вы загружаете JavaScript-файлы jQuery перед скомпилированными файлами Scriptcript => JavaScript, он должен работать без проблем (вам может понадобиться очистить кеш браузера/обновить веб-страницу, если он не работает сразу).

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