将 shared/partial 模块导入另一个文件
Import shared/partial module into another file
假设我有两个文件:
box.ts:
export module Entities {
export class Box { .. Stuff }
origin.ts:
export module Entities {
export class Origin { .. other stuff }
据我了解javascript,这两个模块应该合并到一个模块中,其中包含我的 类..(出于组织原因,我只想将它们放在单独的文件中,但两个都框和 origin 是实体。)
所以现在我有一个需要同时使用这两个文件的文件:
服务-actions.ts:
import {Entities} from '../entities/box';
import {Entities} from '../entities/origin';
... stuff that uses both of those entities.
这给了我错误:
Duplicate identifier 'Entities';
如果我有一个,它工作正常,但都失败了。
有什么方法可以组合这些,以便我可以在我的服务-action.ts 文件中执行 Entities.Box
和 Entities.Origin
?
唯一的方法是将 Box
和 Origin
放在同一个文件中吗?
使用as
:
import {Entities as BoxEntities} from './../entities/box';
import {Entities as OriginEntities} from './../entities/origin';
// Use BoxEntities and OriginEntities here
最好,如果您实际上是直接从文件中导出 类(正如 mk 所指出的那样),您可以创建一个 entities.ts
文件来处理它你:
export * from './entities/box';
export * from './entities/origin';
然后导入这个文件:
import * as Entities from './../entities';
// use Entities.Box and Entities.Origin here
不要将命名空间(内部模块)与外部模块混用。有关反对混合的论点,请参阅 this post and 和其他人。我发现最好不要完全使用内部模块。我们不会从名称空间中获得任何封装优势。相反,目录是组织代码的一种简单而可靠的方式,您已经在使用它们了。
entities/box.ts:
export class Box { .. Stuff }
entities/origin.ts:
export class Origin { .. other stuff }
现在不必编写 Entities.Box
,您只需导入 Box
并使用它:
import { Box } from '../entities/box';
import { Origin } from '../entities/origin';
假设我有两个文件:
box.ts:
export module Entities {
export class Box { .. Stuff }
origin.ts:
export module Entities {
export class Origin { .. other stuff }
据我了解javascript,这两个模块应该合并到一个模块中,其中包含我的 类..(出于组织原因,我只想将它们放在单独的文件中,但两个都框和 origin 是实体。)
所以现在我有一个需要同时使用这两个文件的文件:
服务-actions.ts:
import {Entities} from '../entities/box';
import {Entities} from '../entities/origin';
... stuff that uses both of those entities.
这给了我错误:
Duplicate identifier 'Entities';
如果我有一个,它工作正常,但都失败了。
有什么方法可以组合这些,以便我可以在我的服务-action.ts 文件中执行 Entities.Box
和 Entities.Origin
?
唯一的方法是将 Box
和 Origin
放在同一个文件中吗?
使用as
:
import {Entities as BoxEntities} from './../entities/box';
import {Entities as OriginEntities} from './../entities/origin';
// Use BoxEntities and OriginEntities here
最好,如果您实际上是直接从文件中导出 类(正如 mk 所指出的那样),您可以创建一个 entities.ts
文件来处理它你:
export * from './entities/box';
export * from './entities/origin';
然后导入这个文件:
import * as Entities from './../entities';
// use Entities.Box and Entities.Origin here
不要将命名空间(内部模块)与外部模块混用。有关反对混合的论点,请参阅 this post and
entities/box.ts:
export class Box { .. Stuff }
entities/origin.ts:
export class Origin { .. other stuff }
现在不必编写 Entities.Box
,您只需导入 Box
并使用它:
import { Box } from '../entities/box';
import { Origin } from '../entities/origin';