我遇到了一个问题,即我的层次结构中的一部分导入似乎创建了全新的类型-也就是说,它们不属于同一类,并且不共享静态var。
假设我有这样的目录结构:
app/
|-main.ts
|-static/
|-|-StaticClass.ts
|-consumer/
|_|-Consumer.ts
otherConsumer/
|-OtherConsumer.ts
Main.ts:
import { StaticClass } from './static/StaticClass';
import { Consumer } from './Consumer';
import { OtherConsumer } from '../otherConsumer/OtherConsumer';
export class Main {
constructor() {
StaticClass.INIT();
new Consumer();
new OtherConsumer();
}
}
StaticClass.ts:
export class StaticClass {
public static A:string;
public static INIT():void {
StaticClass.A = "Hello";
}
}
Consumer.ts:
import { StaticClass } from './static/StaticClass';
export class Consumer {
constructor() {
alert (StaticClass.A);
}
}
在我们的示例中,OtherConsumer.ts与Consumer.ts具有相同的作用。
运行Main时,消费者输出“ Hello”,OtherConsumer输出“ undefined”。
如果将“ static /”目录在层次结构中上移一个,成为“ app”和“ otherConsumer”的同级(以及所有包含路径也相应更改),则两个使用者都将输出“ Hello”。如果将otherConsumer目录下移到应用程序目录中,两者都都说“ Hello”。
这是怎么回事?因为OtherConsumer在主应用程序目录之外,它是否在其他“需要”名称空间中?
答案 0 :(得分:1)
运行Main时,消费者输出“ Hello”,OtherConsumer输出“ undefined”。
最可能的原因是循环依赖性。运行时将传递一个undefined来临时解决它。