2012-11-06 45 views
2

我想獲取Ember.js庫的定義來使用TypeScript。每當我嘗試引用餘燼,1.0.d.ts文件出現錯誤的情況下,43:TypeScript DefinitelyTyped Ember.js d.ts不會編譯

The name 'Ember' does not exist in the current scope. 

我使用Visual Studio 2012與打字稿和安裝Web精華包,心想也許這是一個問題用我自己的配置,我嘗試從DefinitelyType項目加載一個不同的.d.ts文件。我試圖引用Angular.js定義文件,它給了我沒有錯誤,所以我假設定義文件有問題。

https://github.com/borisyankov/DefinitelyTyped/blob/master/Definitions/ember-1.0.d.ts

可能是什麼這個錯誤的原因是什麼? 。

這是給我的錯誤的部分之一,在灰燼*部分被標記爲錯誤:

export interface Enumerable extends Mixin { 
    // Fields 
    firstObject: Object; 
    hasEnumerableObservers: bool; 
    lastObject: Object; 
    nextObject: Object; 

    // Methods 
    addEnumerableObserver(target, opts); 
    compact(): any[]; 
    contains(obj: Object): bool; 
    enumerableContentDidChange(removing: number, adding: number): Object; 
    enumerableContentDidChange(removing: Ember.Enumerable, adding: Ember.Enumerable): Object; 
    enumerableContentDidChange(start: Number, removing: number, adding: number): Object; 
    enumerableContentDidChange(start: Number, removing: Ember.Enumerable, adding: Ember.Enumerable): Object; 

    enumerableContentWillChange(removing: number, adding: number): Ember.Enumerable; 
    enumerableContentWillChange(removing: Ember.Enumerable, adding: Ember.Enumerable): Ember.Enumerable; 
    enumerableContentWillChange(start: Number, removing: number, adding: number): Ember.Enumerable; 
    enumerableContentWillChange(start: Number, removing: Ember.Enumerable, adding: Ember.Enumerable): Ember.Enumerable; 

    every(callback: Function, target?: Object): bool; 
    everyProperty(key: string, value?: string): any[]; 
    filter(callback: Function, target?: Object): any[]; 
    filterProperty(key: string, value?: string): any[]; 
    find(callback: Function, target?: Object): Object; 
    findProperty(key: string, value?: string): Object; 
    /*forEach 
    getEach 
    invoke 
    map 
    mapProperty 
    reduce 
    removeEnumerableObserver 
    setEach 
    some 
    someProperty 
    toArray 
    uniq 
    without*/ 
} 

回答

1

我做在Visual Studio兩個變化得到這個工作。

在宣言中,我改變:

declare module "Ember" { 

declare module Ember { 

而在你的界面,我改變:

interface Enumerable extends Mixin { 

interface Enumerable extends Ember.Mixin { 

之後,所有的警告都消失了。

+0

謝謝。看起來,除去引號後,所有錯誤都消失了。即使不必將Ember.Mixin添加到Enumerable擴展的接口中。是否有任何理由補充呢? – bbs

+0

Ember模塊中有幾個對象可能存在名稱衝突,例如'Ember.Object'可能被誤認爲是全局對象。 – Fenton

+0

好的,再次感謝你。 – bbs