如何在typescript中导出接口集合

时间:2017-07-20 06:10:02

标签: typescript interface

我有一个文件actions.ts,它声明了一堆动作类型。

actions.ts

export interface Action1 extends Action {
type: types.Action1Type
}

export interface Action2 extends Action {
type: types.Action2Type
}

export interface Action3 extends Action {
type: types.Action3Type
}

我使用以下命令在index.ts中导入这些操作:

import * as actions from './actions';

index.ts文件中actions变量的类型是什么?我希望能够在actions.ts文件本身中创建此构造并将其导出。类似于以下内容:

actions.ts

interface Action1 extends Action {
type: types.Action1Type
}

interface Action2 extends Action {
type: types.Action2Type
}

interface Action3 extends Action {
type: types.Action3Type
}

export const Actions = {
  Action1,
  Action2,
  Action3,
}

但这给了我一个错误:

  

Action1仅指类型,但在此处用作值。

1 个答案:

答案 0 :(得分:3)

接口只是TypeScript中的类型定义,因此您无法通过操作创建变量(将它们用作值)。

您可以使用命名空间来组合您的操作:

namespace Actions {

  export interface Action1 extends Action {
    type: types.Action1Type
  }

  export interface Action2 extends Action {
    type: types.Action2Type
  }

  export interface Action3 extends Action {
    type: types.Action3Type
  }

}

这允许您执行以下操作:

import {Actions} from './actions';`

但这与import * as actions from './actions';基本相同。您不能将Actions用作值。