我正在尝试为CreateJS制作一个TypeScript声明文件(www.createjs.com)。
我有一个基类声明,如下所示:
/// <reference path="../geom/Point.d.ts"/>
/// <reference path="../geom/Rectangle.d.ts"/>
/// <reference path="../geom/Matrix2D.d.ts"/>
/// <reference path="../filters/Filter.d.ts"/>
/// <reference path="Shadow.d.ts"/>
/// <reference path="Shape.d.ts"/>
/// <reference path="Stage.d.ts"/>
declare module createjs {
class DisplayObject {
// constructor:
constructor();
... additional methods
}
}
然后我声明了更多从DisplayObject派生的类:
/// <reference path="DisplayObject.d.ts"/>
declare module createjs {
class Bitmap extends DisplayObject{
constructor (imageOrUri:any);
... additional methods
}
}
/// <reference path="DisplayObject.d.ts"/>
declare module createjs {
class Container extends DisplayObject{
constructor();
... additional methods
}
}
/// <reference path="../../tweenjs/Timeline.d.ts"/>
/// <reference path="DisplayObject.d.ts"/>
/// <reference path="Container.d.ts"/>
declare module createjs {
class MovieClip extends Container{
constructor (mode: string, startPosition: number, loop: bool, labels: any);
... additional methods
}
}
等。等
但我总是遇到这样的编译器错误:
基类型'DisplayObject'在声明之前被引用 要么 基类型'Container'在其声明之前被引用。
我看不出我做错了什么,一切看起来都不错。 任何帮助真的很感激......非常感谢提前!
答案 0 :(得分:4)
如果你的代码分成多个文件,你需要让开发工具和编译器使用引用知道其他文件:
/// <reference path="createjs.ts" />
我刚刚在Visual Studio中对此进行了测试,似乎清除了错误,假设您的第一个代码块位于名为createjs.ts
的文件中,您可以将其添加到第二个文件的顶部。
如果它们按照您指定的顺序存在于同一个文件中,则一切都适合我。
<强>更新强>
我创建了一个包含以下文件的Visual Studio项目,一切正常 - 我遇到的一件事是您可能将代码组织到文件夹中,在这种情况下,您需要使用相对路径,例如:
/// <reference path="./createjs/DisplayObject.d.ts" />
无论如何,这是我在空项目中的工作设置:
DisplayObject.d.ts
declare module createjs {
class DisplayObject {
// constructor:
constructor ();
}
}
Bitmap.d.ts
/// <reference path="DisplayObject.d.ts"/>
declare module createjs {
class Bitmap extends DisplayObject {
constructor (imageOrUri: any);
}
}
Container.d.ts
/// <reference path="DisplayObject.d.ts"/>
declare module createjs {
class Container extends DisplayObject {
constructor ();
}
}
一切都很开心。您不需要export
关键字,因为它们都在同一个模块中。
如果您想查看示例,我很乐意将其压缩到某处。