【发布时间】:2014-03-02 14:04:57
【问题描述】:
我正在阅读 DurandalJS.com 网站上的 Durandal“入门”指南,但我正在尝试使用 TypeScript。最后一个演示(雷尼尔山)有一个模块,代码如下:
define(function (require) {
var http = require('plugins/http'),
ko = require('knockout');
//other stuff
}
当我在浏览器中运行代码时一切正常,但我想看看是否可以让 TypeScript 了解这些类型。我从 DefinitiveTyped 导入了 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 变量进行强类型化的正确方法是什么 - 只需声明一个接口而不是一个模块?
【问题讨论】:
标签: typescript durandal