2013-06-24 4 views
0

Я хотел бы, чтобы иметь возможность ссылаться на внешнюю библиотеку (EaselJs) из конструктора одного из моих классов:ссылки на другие библиотеки

export class GameCanvas { 

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

     start(delay, callback) { 
     } 
    } 

Это не будет компилироваться, поскольку он не знает, что это createjs

Я мог передать его конструктору. Но этот объект довольно далеко вниз графа объектов, так что нужно будет прийти через много других вызовов

Есть еще один способ, которым я могу удовлетворить машинописи компилятор и сделать его знать об объектах в библиотеках внешних

благодарит

+0

проверить это http://stackoverflow.com/questions/15865465/cant-get-references-to-work-with-typescript –

ответ

2

Quick/Грязная решение: создать объявление для 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

+0

выглядит как мольберт, зависит от tweenjs и имеет некоторые ошибки в нем :( – ChrisCa

+0

U can используйте простую декларацию для быстрого исправления – basarat

+0

@chicca. Эти ошибки были исправлены довольно давно :) – basarat

0

Я использую ссылки из проекта DefinetelyTyped (они декларируют только интерфейс, который удовлетворяет компилятор).

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

выглядит как мольберт, зависит от tweenjs, и в нем есть некоторые ошибки :( – ChrisCa

0

С точки зрения обеспечения 3-й партии ссылается одна особенность стоит знать, что если вы включаете что-то вроде следующую строку в качестве первой строки файла Ts:

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

где references.ts включает в себя ссылки к конкретным другим файлам ts местоположение файлов, указанных в ссылках.ts, относится к местоположению reference.ts, а не к файлу ts, который включает указанную выше строку.

Это полезно, если вы хотите играть с реализацией коммутации и т. П., Например, одна версия кода, полученная от DT, не работает, например, с конкретной версией jQuery или Knockout.