我对定义一个现有的框架(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 中提到的,声明的顺序很重要.因此,类定义必须位于具有嵌套类型的模块之前.

Typescript相关问答推荐

从接口创建类型安全的嵌套 struct

APP_INITIALIZER—TypeError:appInits不是函数

`((PrevState:NULL)=>;NULL)|null`是什么意思?

如何为父类构造函数中的修饰属性赋值?

在MessageStore对象中实现条件类型时出现TypeScrip错误

在不更改类型签名的情况下在数组并集上映射文字

TypeScrip 5.3和5.4-对`Readonly<;[...number[],字符串]>;`的测试版处理:有什么变化?

Angular 17子路由

CDK从可选的Lambda角色属性承担角色/复合主体中没有非空断言

是否可以判断某个类型是否已合并为内部类型?

使用TypeScrip5强制使用方法参数类型的实验方法修饰符

根据类型脚本中的泛型属性 Select 类型

在构建Angular 应用程序时,有没有办法通过CLI传递参数?

Rxjs将省略的可观测对象合并到一个数组中

内联类型断言的工作原理类似于TypeScrip中的断言函数?

TypeScript:方法获胜';t接受较窄类型作为参数

JSX.Element';不可分配给类型';ReactNode';React功能HOC

Angular 16:无法覆盖;baseUrl;在tsconfig.app.json中

Typescript 从泛型推断类型

TS2532:对象可能未定义