gpt4 book ai didi

typescript 基类型 'xxxx' 在其声明之前被引用

转载 作者:搜寻专家 更新时间:2023-10-30 21:25:11 24 4
gpt4 key购买 nike

我正在尝试为 CreateJS ( www.createjs.com ) 创建一个 TypeScript 声明文件。

我有一个如下所示的基类声明:

/// <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

}
}

等等等

但我总是遇到这样的编译器错误:

Base type 'DisplayObject' is referenced before its declaration or Base type 'Container' is referenced before its declaration.

我看不出我做错了什么,一切看起来都很好。非常感谢任何帮助...提前致谢!

最佳答案

如果您的代码分布在多个文件中,您需要使用引用让开发工具和编译器了解其他文件:

/// <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 ();
}
}

位图.d.ts

/// <reference path="DisplayObject.d.ts"/>

declare module createjs {
class Bitmap extends DisplayObject {
constructor (imageOrUri: any);
}
}

容器.d.ts

/// <reference path="DisplayObject.d.ts"/>

declare module createjs {
class Container extends DisplayObject {
constructor ();
}
}

一切皆大欢喜。您不需要 export 关键字,因为它们都在同一个模块中。

如果您想查看示例,我很乐意将其压缩到某个地方。

关于 typescript 基类型 'xxxx' 在其声明之前被引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13020651/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com