2012-12-06 141 views
2

下面的代碼VAR聲明隱藏內部模塊

interface Foo { 
} 
declare var Foo: { 
    new() : Foo; 
} 

module Bar { 
    export interface Baz { 
    } 
    export declare var Baz: { 
     new() : Baz; 
    } 
} 

function f(p:Foo) { 
} 

//function b(p:Bar.Baz) { 
//} 

編譯罰款接口,但是如果我在最後兩行tsc.exe產生「預期類型」誤差 這似乎是宣告裏面一個變種評論範圍隱藏了接口聲明。

任何想法?

+0

你會在這裏預期什麼樣的行爲 - 你給了兩個同名的東西? – Fenton

+0

我希望如果我需要一個界面,界面會出現,如果我需要一個對象,對象會出現。 TypeScript-Team在'lib.d.ts'中這樣做 - 看看http://typescript.codeplex.com/SourceControl/changeset/view/2bee84410e02#typings%2flib.d.ts ...而且無論如何..我真正的問題是,模塊內部和外部的使用行爲有所不同...... – Nils

回答

2

我想我明白你在做什麼,但可能是錯的。

下面是創建一個類似於在你的例子聲明的例子:

interface Foo { 
} 

declare var Foo: { 
    new() : Foo; 
} 

declare module Bar { 
    export interface Baz { 
    } 
    export class Baz { 
     new() : Baz; 
    } 
} 

function f(p:Foo) { 
} 

function b(p:Bar.Baz) { 
} 

我不建議這樣做的聲明之外 - 這就是爲什麼我轉換的模塊聲明。