如何创建一个“外部模块”打字稿定义文件以包含一个npm包?

时间:2015-12-01 21:29:45

标签: npm typescript

我最近为开源redux-ui-router库添加了a typescript definition file,但我现在收到类似于1.7.3的错误:

  

错误TS2656:导出的外部包装类型文件   'C:/.../ node_modules / redux-ui-router / index.d.ts'是   不是一个模块。请与软件包作者联系以更新软件包   定义

我正在尝试使用我的打字稿文件中的代码导入此库:

import ngReduxUiRouter from "redux-ui-router";

我是Typescript的新手,我找不到这个定义文件在npm包中包含时应该是什么样子的清晰描述。 There's a wiki entry讨论了npm包的类型,但在重复应该使用外部模块的方向之外,没有一个具体的例子可供使用。

CORRECTION 我已经尝试删除declare module "redux-ui-router" {代码,,这似乎在重新启动webpack后工作,我正在使用它来编译所有内容(我为了简洁而删除了注释):

export interface ReduxUIRouterAction {
    type: string;
    payload: any;
}
export interface ReduxUIRouterState {
    currentState: Object;
    currentParams: Object;
    prevState: Object;
    prevParams: Object;
}
export function router(state: ReduxUIRouterState, action: ReduxUIRouterAction): ReduxUIRouterState;
export var ngReduxUiRouter: string;
export function stateGo(to: string, params?: Object, options?: Object): ReduxUIRouterAction;
export function stateReload(state: any): ReduxUIRouterAction;
export function stateTransitionTo(to: string, params?: Object, options?: Object): ReduxUIRouterAction;
export default ngReduxUiRouter;

在npm包中包含这些更改时会有什么变化吗?

1 个答案:

答案 0 :(得分:4)

  

在npm包中包含这些更改时会有什么变化吗?

是。导出需要是文件的根级别。

换句话说:环境文件不是外部模块