0

当使用具有定义(base.d.ts)的类和一些没有定义的类(EventDispatcher.ts)时,我遇到了一个问题,它们只是具有相同命名空间的 Typescript 类。

总而言之,我被困在这些错误之间,因为以下语法无效:

declare var Acme.Ajax: AcmeAjaxInterface;

我正在尝试做的事情:

我的 base.d.ts 文件包含:

interface AcmeInterface{
    Ajax: AcmeAjaxInterface;
}

interface AcmeAjaxInterface{
    call(...parameters: any[]);
}

我的 EventDispatcher.ts 包含:

module Acme {
    expost class EventDispatcher{}
}

尝试在以下文件中同时使用两者时:

///<reference path="base.d.ts" />
///<reference path="EventDispatcher.ts" />
Acme.Ajax.Call():

我收到一个错误,因为从未声明 Acme 变量:

TS2094: The property 'Ajax' does not exist on value of type 'Acme'.

但是,当我添加以下内容时:

declare var Acme : AcmeInterface;

我收到一个错误:

TS2000: Duplicate identifier 'Acme'.

防止这些错误发生的方法是什么?

4

1 回答 1

2
declare var Acme.Ajax: AcmeAjaxInterface;

应该

declare module Acme {
    export var Ajax: AcmeAjaxInterface;
}

您不能在名称中定义/声明带有 .s 的变量。 module是您如何将事物放入名称空间中。请注意,您可以使用 .s 作为嵌套模块的快捷方式,例如:declare module Alpha.Bravo.Charlie { /*...*/ }.

于 2013-10-03T15:10:25.317 回答