打字稿中的名称空间是相对的吗?当我尝试以下代码时。
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();
我收到错误消息" Property''在' typeof b'类型中不存在。"
有没有办法说明打字稿' b'是"当前"的根源而不是孩子。命名空间?
THX
答案 0 :(得分:0)
您无法做到这一点,因为在a
内,访问b
会为您提供当前范围内的内容以及a.b
。
您这样做的唯一方法是从窗口对象访问根b
:
namespace a.b.c {
export function sayHello() {
window.b.g.h.sayHello();
}
}
但是,您还需要将定义添加到窗口对象中:
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");
}
}