[英]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.