不导入的 TypeScript 类型 类?

TypeScript Types without importing classes?

我将尝试在我们的应用程序中实现一些 IoC/DI 框架(考虑 Inversify,如果有任何其他建议)但我们仍然有必须包含其类型的文件的问题。我们如何解决这个问题?我们使用的是最新版本的 TypeScript(撰写本文时为 2.3)。

我们有很多不同类型的导入,例如:

// Components
import {GuideTime} from '../components/guide-time/guide-time.component';
import {GuideNetwork} from '../components/guide-network/guide-network.component';
import {GuideDetail} from '../components/guide-detail/guide-detail.component';
import {Player} from '../components/player/player.component';

// Services
import {Keys, KeyService} from '../core/services/key.service';
import {GuideService} from '../core/services/guide/guide.service';
import {afterCSSUpdate} from '../core/services/utility.service';
import {DataService} from '../core/services/data/data.service';

或者只是为了获取某物的类型:

import {ITitle} from '../../models/title.interface';
import {IGuide} from '../../models/guide.interface';

有没有办法合并这些(最好是自动或全局)?我意识到我可能可以在某个地方制作一个 mytypes.ts 文件,然后从我们的应用程序中导入和导出所有类型,这样就有一个单一的中央文件可以导入,但这会引入其他问题(以及大量工作)。

谢谢!

要使所有这些全局化,您需要将它们全部导入到一个界面中,然后在需要访问每种类型的任何地方导入该界面。类似于

import * as mainInterface from 'MainInterface'

此外,您可以尝试仅针对副作用进行导入(这样您就可以访问类型),尽管在实践中不建议这样做。

来自the documentation

Though not recommended practice, some modules set up some global state that can be used by other modules. These modules may not have any exports, or the consumer is not interested in any of their exports. To import these modules, use: import "./my-module.js";

EDIT 此外,类似于上面的单一接口解决方案,您可以将每个类型放入同一个命名空间。您可以 ,这意味着您可以将每个类型包装在一个主命名空间中。

namespace MainNamespace {

    export class GuideTime {
        ...
        }
    ...
}