参考其他图书馆

时间:2013-06-24 11:48:58

标签: typescript

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

export class GameCanvas {

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

        start(delay, callback) {
        }
    }

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

我可以将它传递给构造函数。但是这个对象在对象图中是一个很好的方式,因此需要通过许多其他调用来实现

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

感谢

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

https://github.com/borisyankov/DefinitelyTyped/tree/master/easeljs

答案 2 :(得分:0)

在提供第三方引用方面,值得了解的一个特性是,如果您将以下行包含在ts文件的第一行:

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

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

如果您想要使用切换实现等,这很有用,例如,从DT获取的一个代码版本不适用于特定版本的jQuery或Knockout。