2014-01-29 68 views
1

剛剛發現了關於Typescript的內容,並且在弄亂它之後,我決定用JQuery和OMG測試它,我無法使它工作。在typescript中導入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

你需要在你的HTML頁面的腳本標籤中包含當前的'jquery.js'。 '.d.ts'只是接口定義文件,它不包含jQuery功能。 – WiredPrairie

+0

那真是太遺憾了。但是添加' \t '之前''in default.html does not solve the issue – Axel

+1

Could你澄清 - 這是在運行時還是編譯時?錯誤提示運行時間,但你說它是在編譯時。 – WiredPrairie

回答

2

確保您」 VE包括jQuery的腳本的HTML頁面上:

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

.d.ts文件只能作爲定義jQuery和不實際的IMPL ementation。如果您在編譯的Typescript => JavaScript文件之前加載jQuery JavaScript文件,它應該沒有問題(您可能需要清除瀏覽器緩存/刷新網頁,如果它不立即工作)。