从TypeScript导入语法以引用dgrid

时间:2012-10-11 12:43:36

标签: typescript js-amd dgrid

我正在学习TypeScript和Dojo,这暴露了我对AMD的有限理解。我不明白如何将import语句绑定到第三方“dgrid / Grid”AMD模块,我的dgrid.d.ts存根声明和我的消费类。经过2天的浪费,我正在寻找任何方法(hacky或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中的经典Dojo dojoConfig,baseUrl和dgrid包声明。文件。

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

import Grid = module("dgrid/Grid");

module MyModule
{
   ...
}

更新1 自发布以来,我在官方TypeScript手册中阅读了第10章。以前我没有认识到声明为模块MyType {}或模块“external / thirdparty”{}的模块的重要性。外部模块的环境声明应该是文字。

背景

要求声明:

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

2 个答案:

答案 0 :(得分:1)

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

<强> 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纳入范围。使用模块名称作为类型名称的前缀可以完成工作。

答案 1 :(得分:0)

我的第一个问题是检查文件是否在您认为该语句可用的位置:

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

dgrid.d.ts文件与模块.ts文件位于同一文件夹中吗?

<强>更新

你的模块声明应该是:

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

        }
    }
}