2012-10-07 185 views
2

我有一些JavaScript代碼正在嘗試轉換爲Typescript。如何在TypeScript中導入JavaScript模塊

假設typescript是JavaScript的超集,除了下面有編譯器錯誤。假設我沒有進口劫庫爲打字稿,我將如何轉換下面的代碼:

(function(ko, viewModels){ 
    viewModels.MyViewModel = function(){ 
     //stuff in here 
    } 
}(ko, window.viewModels = window.viewModels || {})); 

爲參考,這是我嘗試在打字稿

module viewModels { 

    export class PartDetailsViewModel { 
     public bar: string; 
      constructor(){ 
       this.bar = ko.foo(); //<-- compiler error, "ko" does not exist in current scope 
      } 
     } 
    } 
} 

回答

7

查找到打字稿的「環境聲明」它允許你聲明將在運行時提供的外部成員。因此,在你的榜樣,添加下面就使編譯器高興:

declare var ko; 

順便說一句,我想在這個帖子也引導您:https://stackoverflow.com/a/12692174/806003

斯登提供一個基本的淘汰賽接口,使你可以在聲明中指定一個類型來獲得一些靜態類型。在評論中也發現了這個:https://gist.github.com/3833509

+0

更好地指出這個KO聲明(因爲它比你指出的要點更詳細一點):https://github.com/sv01a/TypeScript-Knockoutjs –

+1

更完整:https://github.com/borisyankov/DefinitelyTyped/blob/master/Definitions/knockout-2.2.d.ts –

相關問題