如何访问命名空间而不是类?

时间:2017-10-31 19:28:17

标签: javascript typescript

我有一个名为store的类和一个名为store的命名空间。当我尝试从mynamespace.store.makeRequesty类访问mynamespace.modal.store时,TypeScript找不到它。

A.ts

namespace mynamespace.modal {
    export class store() {
        public constructor() {
            store.makeRequest()
        }
    }
}

B.ts

namespace mynamespace.store {
    export function makeRequest() {
        // Makes an http request
    }
}
  

财产' makeRequest'类型' typeof store'。

上不存在

我尝试将其称为mynamespace.store.makeRequest(),但后来我收到以下错误:

  

物业'商店'在mynamespace'的类型'类型中不存在。

我有什么方法可以访问store namespace而不是store class

修改

我尝试将命名空间附加到窗口:

interface Window {
  mynamespace: mynamespace
}

但是,我收到以下错误:

  

[ts]找不到姓名' mynamespace'。
  [ts]财产' mynamespace'导出的界面已经或正在使用私人名称' mynamespace'。

2 个答案:

答案 0 :(得分:0)

试试这个:

A.ts

namespace mynamespace.modal {
  export class store {
      public constructor() {
        mynamespace.store.makeRequest()
      }
  }
} 

B.ts

namespace mynamespace {
  export namespace store {
    export function makeRequest() {
      // Makes an http request
    }
  }
}

答案 1 :(得分:0)

使用import创建别名并避免名称冲突:

namespace mynamespace.store {
    export function makeRequest() {
        // Makes an http request
    }
}

namespace mynamespace.modal {
    import makeRequest = mynamespace.store.makeRequest;
    export class store {
        public constructor() {
            makeRequest();
        }
    }
}