“ axios仅指类型,但在此处被用作值”?

时间:2019-05-21 17:37:26

标签: typescript

我还查看了有关此错误消息的其他StackOverflow问题,但没有一个问题解决了我的问题。

我在TypeScript文件中有以下两行,试图导入一些普通的JS:

import axios from 'utils/UserSessionAPIAxios';
axios.doStuff(stringArgument);

这是我的*.d.ts文件:

declare module 'utils/UserSessionAPIAxios' {
  export const someData: string;

  export type DoStuffFn = (data: string) => void;

  export default interface UserSessionAPIAxios {
    doStuff: DoStuffFn;
  }
}

相应的JS文件如下所示:

import axios from 'axios';

export const someData = 'data data data';

const userSessionAxios = axios;

userSessionAxios.doStuff = (data) => {
  // omitted
};

export default userSessionAxios;

为什么我在致电axios only refers to a type, but is being used as a value here的行上收到错误doStuff

1 个答案:

答案 0 :(得分:2)

我认为您想将.d.ts文件更改为以下内容:

declare module 'utils/UserSessionAPIAxios' {
  export const someData: string;

  export type DoStuffFn = (data: string) => void;

  export interface UserSessionAPIAxios {
    doStuff: DoStuffFn;
  }

  export const userSessionAxios: UserSessionAPIAxios;

  export default userSessionAxios;

}

这个想法是您的默认导出不是UserSessionAPIAxios 接口,它是一个 value ,其 type 是该接口。

希望有所帮助;祝你好运!