【问题标题】:"axios only refers to a type, but is being used as a value here"?“axios 仅指一种类型,但在这里用作值”?
【发布时间】:2019-10-08 04:00:06
【问题描述】:

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

我在 TypeScript 文件中有以下两行,试图导入一些 vanilla 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;

为什么我在拨打doStuff 的那一行出现错误axios only refers to a type, but is being used as a value here

【问题讨论】:

    标签: typescript


    【解决方案1】:

    我认为您想将您的 .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 接口,它是一个,其类型是那个接口。

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

    【讨论】:

    • 非常感谢,我在这两个工作日的 9 个小时里都坚持了下来。现在看起来很明显,您指出了正确的实现。
    猜你喜欢
    • 2018-01-14
    • 2019-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-05
    • 2018-12-30
    • 2019-09-16
    • 2017-08-16
    相关资源
    最近更新 更多