2012-10-22 30 views
1

我正在嘗試爲CreateJS(www.createjs.com)創建一個TypeScript聲明文件。typescript在聲明之前引用基類型'xxxx'

我有一個基類的聲明看起來像這樣:

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

     } 
    } 

等等,等等

但我總是得到這樣的編譯器錯誤:

在聲明之前引用基本類型'DisplayObject' 或 在聲明之前引用基本類型'Container'。

我沒有看到我做錯了什麼,一切都看起來不錯。 任何幫助真的很感激...很多提前感謝!

+0

這兩個例子在單獨的文件?如果第二個文件(聲明擴展類)具有指向第一個文件的部分, – Quango

+0

這三個例子都在單獨的文件中。整個項目鏡像CreateJS文件結構。在每個文件的頂部,我都有對所需的.d.ts文件的「引用路徑」。 – user1766721

回答

4

如果你的代碼是跨多個文件分割,你需要讓開發工具和編譯器知道使用參考其他文件:

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

Bitmap.d.ts

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

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

Container.d.ts

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

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

,一切都高興。您不需要export關鍵字,因爲它們都在同一個模塊中。

如果您想查看示例,我很高興將它壓縮到某處。

+0

是的,我的代碼被分割成多個文件,我使用的是需要類的文件的引用路徑。我編輯了這個問題(在代碼中添加了引用路徑) – user1766721

+1

我將從基礎DisplayObject類派生的所有類粘貼到與DisplayObject相同的文件中,並且所有錯誤都消失了......很奇怪。我真的不知道爲什麼單獨的文件不起作用。 – user1766721

+0

我只是在Visual Studio中旋轉你的例子來看看我得到了什麼。 – Fenton

相關問題