繁体   English   中英

打字稿中的相对名称空间?

[英]Relative namespaces in typescript?

打字稿中的名称空间是相对的吗? 当我尝试下面的代码。

namespace a.b.c {
  export function sayHello() {
    b.g.h.sayHello();
  }
}

namespace b.g.h {
  export function sayHello() {
    console.log("Hello");
  }
}

a.b.c.sayHello();

我收到一个错误:“类型'typeof b'上不存在属性'g'。”

有没有办法说出打字稿说“ b”是“当前”命名空间的根而不是子?

谢谢

您无法执行此操作,因为在a内访问b会为您提供当前范围内的内容,即ab
您执行此操作的唯一方法是从窗口对象访问根b

namespace a.b.c {
    export function sayHello() {
        window.b.g.h.sayHello();
    }
}

但是然后,您还需要将定义添加到window对象:

interface Window {
    b: {
        g: {
            h: {
                sayHello(): void;
            }
        }
    }
}

操场上的代码

另一种选择是将b包装在另一个名称空间中:

namespace a.b.c {
    export function sayHello() {
        wrapper.b.g.h.sayHello();
    }
}

namespace wrapper.b.g.h {
    export function sayHello() {
        console.log("Hello");
    }
}

操场上的代码

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM