我对定义一个现有的框架(openlayers.d.ts)感兴趣,但不知道如何表达openlayers.Layer是OpenLayers的类和名称空间.层标记.我相信这会使标记成为一个嵌套的图层类.
用法:
l = new OpenLayers.Layer(...); // this is a base class, never do this
m = new OpenLayers.Layer.Markers(...);
如何在typescript中声明Layer和Markers类?
我对定义一个现有的框架(openlayers.d.ts)感兴趣,但不知道如何表达openlayers.Layer是OpenLayers的类和名称空间.层标记.我相信这会使标记成为一个嵌套的图层类.
用法:
l = new OpenLayers.Layer(...); // this is a base class, never do this
m = new OpenLayers.Layer.Markers(...);
如何在typescript中声明Layer和Markers类?
这似乎已在0.9.1.1及更高版本中修复.只需创建一个与要嵌套类型的类同名的模块,并将嵌套类型放入其中.
更具体地说,你是这样做的:
declare module a
{
class b
{
}
module b
{
class c
{
}
}
}
var myB = new a.b();
var myC = new a.b.c();
当使用export关键字在typescript代码中嵌套类型时,这种方法也适用:
export module a
{
export class b
{
}
export module b
{
export enum c
{
C1 = 1,
C2 = 2,
C3 = 3,
}
}
}
正如用户@recursive在下面的 comments 中提到的,声明的顺序很重要.因此,类定义必须位于具有嵌套类型的模块之前.