我有一个文件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
仅指类型,但在此处用作值。
答案 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
用作值。