使用TypeScript中声明的模块的输入

时间:2014-03-02 14:04:58

标签: typescript durandal

我正在通过Durandal"开始使用" DurandalJS.com网站上的指南,除了我尝试使用TypeScript。最后一个演示(Mount Rainier一个)有一个代码如下的模块:

define(function (require) {
  var http = require('plugins/http'),
      ko = require('knockout');
  //other stuff
}

当我在浏览器中运行代码时,一切正常,但我想知道是否可以让TypeScript知道这些类型。我从DefinitelyTyped导入了Durandal,Knockout,jQuery和RequireJS NuGet包,并且我能够通过执行

来获取ko变量类型
ko : KnockoutStatic = require('knockout');

这是有效的,因为KnockoutStatic是在Knockout.d.ts文件中声明的接口。但是,在durandal.d.ts文件中,' plugins / http'声明如下,没有命名接口:

declare module 'plugins/http' { /*stuff*/ }

我有三个问题:

  • 应该/有没有办法让TypeScript根据内部模块名称的require调用自动知道ko和http的类型?
  • 有没有办法用durandal.d.ts文件的结构方式显式输入我的http变量(模块与接口)。
  • 如果没有,那么设置durandal.d.ts文件以允许强类型化http变量的正确方法是什么 - 只声明一个接口而不是一个模块?

1 个答案:

答案 0 :(得分:2)

所有三个问题的答案:

import http = require('plugins/http');

此外,您不应该手动“定义”,因为打字稿会为您生成。这些被称为外部模块。

PS:我有关于typescripts模块系统http://youtube.com/watch?hd=1&v=KDrWLMUY0R0

的视频