Typescript &引用;不能命名为";生成声明时

Typescript &引用;不能命名为";生成声明时,typescript,Typescript,我在一个相当简单的情况下遇到了一个奇怪的错误 文件ThingA.ts export class ThingA { } export class ThingB { } 文件ThingB.ts export class ThingA { } export class ThingB { } 文件Things.ts(重新导出) 文件Test.ts(使用重新导出的类) 这是我用来编译的:(typescript版本1.8.10) 这就是我得到的错误: Test.ts(5,5): erro

我在一个相当简单的情况下遇到了一个奇怪的错误

文件
ThingA.ts

export class ThingA {

} 
export class ThingB {

}
文件
ThingB.ts

export class ThingA {

} 
export class ThingB {

}
文件
Things.ts
(重新导出)

文件
Test.ts
(使用重新导出的类)

这是我用来编译的:(typescript版本1.8.10)

这就是我得到的错误:

Test.ts(5,5): error TS4029: Public property 'method' of exported class has or is using name 'ThingA' from external module ".../ThingA" but cannot be named.
问题在于为
Test.ts
生成声明文件。所有文件都编译为.js,并且每个文件都有一个生成的.d.ts,但由于上述错误导致的
Test.ts
除外。如果从compile命令中删除了
--declaration
,则不存在错误

一些意见:

1) 该错误不会出现在
ThingA
的每个引用中。如果它在提供的示例中作为方法参数引用,或者作为返回值引用,则会出现错误。如果它在方法体中被引用,则不存在错误。我意识到这是因为在生成的.d.ts中甚至不会提到方法体中的引用,但我仍然不理解tsc为什么不能从
things.ThingA
引用推断出实际的类类型

2) 如果我将
Test.ts
中的导入语句更改为:

import {ThingA,ThingB} from "./Things";
(而不是直接使用
ThingA
)和进一步使用
ThingA
,没有错误。不过,这并不是一个真正的解决方案,因为它有点违背目的或是重新出口

3) 如果我只是从
Test.ts
中的
export class Test{
中删除
export
,没有错误,但是
Test.d.ts
文件是空的。即使不是空的,这也不是一个解决方案,因为这是实际代码的简化情况,其中使用了与
Test.ts
等效的内容(导入)在不同的文件中,因此必须导出类
Test


我在这里做错了什么吗?

我怀疑这是一个bug,所以在typescript github上发布了一个问题,确实是这样


今天遇到了同样的问题,试图将一个项目从内部TS模块(名称空间)转换为外部模块,同时保留.d.TS文件。这对整个项目造成了影响,因为我确实需要生成.d.TS文件,以便可以将其包含在另一个TS项目中:(
import {ThingA,ThingB} from "./Things";