2012-10-07 132 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 –

相关问题