我正在并行学习 TypeScript 和 Dojo,这暴露了我对 AMD 的有限理解。我不明白如何将导入语句与第 3 方“dgrid/Grid”AMD 模块、我的 dgrid.d.ts 存根声明和我的消费类联系在一起。经过 2 天的浪费努力,我正在寻找任何方法(hacky 或 amd 最佳实践)来执行以下操作:
我的模块.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 Studio 用红色强调了“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{} 或模块“外部/第三方”{} 的模块的重要性。外部模块的环境声明应该是文字。
背景:
- 我正在使用从 ajax.googleapis.com 引用的 Dojo 1.8.0
- dgrid JavaScript 本地托管在 /js/dgrid
- 我正在尝试密切关注 SitePen dgrid 教程页面,该页面显示了经典的 AMD require() 加载 dgrid http://dojofoundation.org/packages/dgrid/tutorials/hello_dgrid http://dojofoundation.org/packages/dgrid/tutorials/hello_dgrid /demo/simple.html
要求声明:
require(["dgrid/Grid", "dojo/domReady!"],
function(Grid){