var声明隐藏模块内的接口

时间:2012-12-06 09:39:25

标签: typescript

以下代码

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会生成“预期类型”-Error 似乎声明范围内的var隐藏了接口声明。

有什么想法吗?

1 个答案:

答案 0 :(得分: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) {
}

我不建议在声明之外执行此操作 - 这就是我将模块转换为声明的原因。