从TypeScript导入引用dgrid的语法



我正在并行学习TypeScript和Dojo,这暴露了我对AMD的理解有限。我不知道如何将第三方"dgrid/Grid"AMD模块的导入语句、我的dgrid.d.ts存根声明和我的消费类联系在一起。经过2天的浪费努力,我正在寻找任何方法(黑客或amd最佳实践)来执行以下操作:

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 Studio将"dgrid/Grid"文本用红色下划线,因为我猜TS编译器不知道default.htm文件中的经典DojodojoConfig、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_dgridhttp://dojofoundation.org/packages/dgrid/tutorials/hello_dgrid/demo/simple.html

要求声明:

require(["dgrid/Grid", "dojo/domReady!"],
function(Grid){

您的代码的以下版本(略有更改)对我来说编译得很好:

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带入作用域。将类型名称与模块名称预先混合即可完成此任务。

我的第一步是检查文件是否位于您认为该语句可以工作的位置:

///<reference path='dgrid.d.ts' />

dgrid.d.ts文件是否与模块.ts文件在同一文件夹中?

更新:

模块声明应为:

module dgrid {
export class Grid {
constructor ( gridStructure: any, elementId: string) {
}
}
}

最新更新