我正在并行学习TypeScript和Dojo,这暴露了我对AMD的有限理解。我不明白如何将导入语句绑定到第三方"dgrid/Grid“AMD模块、我的dgrid.d.ts存根声明和我的消费类。在浪费了2天的努力之后,我正在寻找任何方法(hacky或和d最佳实践)来执行以下操作:
MyModule.ts
{
...
var myGrid = new dgrid.Grid( { /*col structure*/}, "divId");
...
}这是我对dgrid的存根声明文件。
dgrid.d.ts (编辑以与下面的更新1同步)
module "dgrid/Grid"
{
export class Grid
{
constructor ( gridStructure: any, elementId: string);
}
}我在消费TypeScript类中尝试了以下引用,但是Visual将" dgrid /Grid“文本用红色显示,因为我猜TS编译器不知道default.htm文件中典型的Dojo dojoConfig、baseUrl和dgrid包声明。
///<reference path='dgrid.d.ts' />
import Grid = module("dgrid/Grid");
module MyModule
{
...
}更新1发布后,我阅读了官方TypeScript手册第10章。以前,我没有认识到模块声明为模块MyType{}或模块“外部/第三方”{}的重要性。外部模块的环境声明应该是文字。
背景:
要求说明:
require(["dgrid/Grid", "dojo/domReady!"],
function(Grid){发布于 2012-10-11 14:45:18
以下(略有更改的)代码版本对我来说编译得很好:
MyModule.ts
///<reference path='./dgrid.d.ts' />
module MyModule {
var gridInstance : dgrid.Grid = new dgrid.Grid("test1", "test2");
}dgrid.d.ts
module dgrid
{
class Grid
{
constructor ( gridStructure: any, elementId: string);
}
}///<reference path='...'/>构造将内部模块dgrid引入范围。以模块的名称作为类型名称的前缀可以完成这项工作。
发布于 2012-10-11 13:52:32
不过,我的第一个任务是检查该文件是否位于您认为该语句工作的位置:
///<reference path='dgrid.d.ts' />dgrid.d.ts文件是否与模块.ts文件位于同一个文件夹中?
更新:
您的模块声明应该是:
module dgrid {
export class Grid {
constructor ( gridStructure: any, elementId: string) {
}
}
}https://stackoverflow.com/questions/12839823
复制相似问题