0

我希望能够从我的一个类的构造函数中引用外部库(EaselJs):

export class GameCanvas {

        private stage; 
        constructor() {
            this.stage = new createjs.Stage("canvasElementId"); // this doesn't compile
        }

        start(delay, callback) {
        }
    }

这不会编译,因为它不知道是createjs什么

我可以将它传递给构造函数。但是这个对象在对象图中的位置相当低,所以它需要通过许多其他调用来

是否有另一种方法可以满足 Typescript 编译器并使其了解外部库中的对象

谢谢

4

3 回答 3

2

快速/肮脏的解决方案:为 createjs 创建一个声明:

declare var createjs;
export class GameCanvas {

        private stage; 
        constructor() {
            this.stage = new createjs.Stage("canvasElementId"); // this doesn't compile
        }

        start(delay, callback) {
        }
    }

更好的解决方案。使用社区为您创建的声明:https ://github.com/borisyankov/DefinitelyTyped

对于 EaselJS:https ://github.com/borisyankov/DefinitelyTyped/blob/master/easeljs/easeljs.d.ts

示例用法:https ://github.com/borisyankov/DefinitelyTyped/blob/master/easeljs/easeljs-tests.ts

于 2013-06-24T11:52:01.890 回答
0

我使用来自 DefinetelyTyped 项目的引用(它们只声明接口,满足编译器)。

https://github.com/borisyankov/DefinitelyTyped/tree/master/easeljs
于 2013-06-24T11:53:07.763 回答
0

在提供第 3 方参考方面,一个值得了解的特性是,如果您在 ts 文件的第一行中包含类似以下行的内容:

///<reference path="./ts/references.ts"/>

其中references.ts 包括对特定其他ts 文件的引用references.ts 中指定的文件的位置相对于references.ts 的位置,而不是包含上述行的ts 文件。

如果您想尝试切换实现等,这将很有帮助,例如从 DT 获得的一个版本的代码不适用于特定版本的 jQuery 或 Knockout。

于 2013-06-24T14:08:23.497 回答