说我有两个文件:
box.ts:
git reset --hard {most recent commit}
origin.ts:
export module Entities {
export class Box { .. Stuff }
据我了解javascript,这两个模块应合并为一个模块,其中包含我的两个类。(我只是因为组织原因需要它们在单独的文件中,但是框和原点都是实体。)
所以现在我有一个文件需要同时使用这两个文件:
服务actions.ts:
export module Entities {
export class Origin { .. other stuff }
这给了我错误:
重复的标识符'实体';
如果我有一个或另一个,它工作正常,但都失败了。
我有没有办法将这些结合起来,以便我可以在service-action.ts文件中执行import {Entities} from '../entities/box';
import {Entities} from '../entities/origin';
... stuff that uses both of those entities.
和Entities.Box
?
执行此操作的唯一方法是将Entities.Origin
和Box
放在同一个文件中吗?
答案 0 :(得分:2)
不要将名称空间(内部模块)与外部模块混合使用。有关混合的参数,请参阅this post和this question以及其他人。我发现最好不要完全使用内部模块。我们没有从命名空间中获得任何封装优势。相反,目录是组织代码的简单而可靠的方法,您已经在使用它们了。
实体/ box.ts:
export class Box { .. Stuff }
实体/ origin.ts:
export class Origin { .. other stuff }
现在,您无需撰写Entities.Box
,只需导入Box
并使用它即可:
import { Box } from '../entities/box';
import { Origin } from '../entities/origin';
答案 1 :(得分:1)
使用as
:
import {Entities as BoxEntities} from './../entities/box';
import {Entities as OriginEntities} from './../entities/origin';
// Use BoxEntities and OriginEntities here
最好,如果您实际上是直接从文件中导出类(正如您所指出的那样),您可以创建一个entities.ts
文件来为您处理它:
export * from './entities/box';
export * from './entities/origin';
然后导入此文件:
import * as Entities from './../entities';
// use Entities.Box and Entities.Origin here