我在使用具有deninitions(base.d.ts)的类时遇到问题,而有些则没有,只是具有相同名称空间的Typescript类(EventDispatcher.ts)。
总而言之,我陷入了这些错误之中,因为以下是无效的语法:
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'.
防止这些错误发生的方法是什么?
答案 0 :(得分:2)
declare var Acme.Ajax: AcmeAjaxInterface;
应该是
declare module Acme {
export var Ajax: AcmeAjaxInterface;
}
您无法在名称中使用.s定义/声明变量。 module
是你把东西放在命名空间里的方式。请注意,您可以使用.s作为嵌套模块的快捷方式,例如:declare module Alpha.Bravo.Charlie { /*...*/ }
。