我希望能够从我的一个类的构造函数中引用外部库(EaselJs):
export class GameCanvas {
private stage;
constructor() {
this.stage = new createjs.Stage("canvasElementId"); // this doesn't compile
}
start(delay, callback) {
}
}
这不会编译,因为它不知道createjs
是什么
我可以将它传递给构造函数。但是这个对象在对象图中是一个很好的方式,因此需要通过许多其他调用来实现
我是否有另一种方法可以满足Typescript编译器并使其了解外部库中的对象
感谢
答案 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。