2012-12-06 75 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) { 
} 

我不建议这样做的声明之外 - 这就是为什么我转换的模块声明。