引用具有类似模块名称的文件时的Typescript错误

时间:2016-03-27 16:34:50

标签: typescript typescript1.7

我有一个这样的打字稿类;

module my.services {
   export class MyService {
      ...
   }
}

另一个像这样;

module com.my.component {

   import MyService = my.services.MyService;

   export class MyComponent {
      ...
   }
}

但是在第二节课中我收到了一个打字稿错误

Module 'com.my' has no exported member 'services'

在这种情况下引用MyService的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

如果我们在这里查看关于命名空间的说明,例如'A.B.C':namespace declarations,很容易看出为什么会出现错误。您的'com.my.component'命名空间声明是有效的:

namespace com
{
    export namespace my
    {
        export namespace component 
        {
            import MyService = my.services.MyService;

            export class MyComponent extends MyService
            {

            }
        }
    }
}

因此,任何尝试在'my'声明中引用以'my ....'开头的任何内容都会尝试在当前'com.my'命名空间内搜索它。

要解决此问题,您可以在“my”命名空间声明之外移动导入:

import MyService = my.services.MyService;

namespace com
{
    export namespace my
    {
        export namespace component 
        {
            export class MyComponent extends MyService
            {

            }
        }
    }
}

或者在较短的版本中:

import MyService = my.services.MyService;

module com.my.component 
{
    export class MyComponent extends MyService
    {

    }
}