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";