环境命名空间打字稿示例

adr*_*rhc 0 namespaces ambient typescript

命名空间章节给出相关的一个例子D3.d.ts,我不明白。
这是完整的示例:

declare namespace D3 {
    export interface Selectors {
        select: {
            (selector: string): Selection;
            (element: EventTarget): Selection;
        };
    }

    export interface Event {
        x: number;
        y: number;
    }

    export interface Base extends Selectors {
        event: Event;
    }
}

declare var d3: D3.Base;
Run Code Online (Sandbox Code Playgroud)

我真正不明白的是我将如何在我的模块或我的打字稿脚本中使用D3.d.ts?请给我一些简短的例子。

编辑
请忽略这里使用 D3 的事实;可能是 B3 或 G3 或 X7 ......随便;我对特定的图书馆不感兴趣。我只对如何使用在我的打字稿模块和打字稿脚本中给出的示例感兴趣。

EDIT2 最让我困惑的是上面的例子使用了declare namespace ...而不是namespace D3(例如用于namespace Validation)。还有什么用(以及如何使用?)declare var d3: D3.Base; ?

H.B*_*.B. 5

此类声明定义了并非来自导入但可能window由 some定义的全局变量<script>。为了能够直接使用这些变量(无需导入!),您可以始终使用引用,例如:

/// <reference path="../types/D3.d.ts" />
d3.select("div"); // No import!
Run Code Online (Sandbox Code Playgroud)

如果声明文件被放置在一个@types目录中,它应该在没有明确引用的情况下被包含在内。


使用命名空间declare是因为这是一个声明文件:它必须导出命名空间(仅对模块有效)或声明它,以使这些类型可用。