【问题标题】:Type "only refers to a type, but is being used as a value here" when exporting导出时类型“仅指一种类型,但在此处用作值”
【发布时间】:2020-07-11 22:12:32
【问题描述】:

我有一个名为 types.ts 的文件,其中包含我所有的类型。我想导出其中的一些,如下所示:

export type Example {
  something: string;
}

我有另一个名为index.ts 的文件,它是我的代码的入口点。我想导出 Example 类型。当我尝试以下操作时:

import { Example } from "./types";

export default {
  Example
}

我收到以下错误:

'Example' 仅指一种类型,但被用作值 here.ts(2693)

我不确定如何正确地从另一个文件中导出类型。我还尝试了以下方法:

export * from "./types";
export { Example } from "./types"; 

但这不起作用,因为它不是导出的一部分,因为我的 export default 包含其他内容,但是如果这是正确的方法,这可能是一个完全不同的问题。

实现这一目标的正确/最佳方法是什么?

【问题讨论】:

    标签: javascript typescript


    【解决方案1】:

    当你这样做时

    export default {
      Example
    }
    

    ...您正在导出一个带有Example 属性(用简写符号编写)的对象文字作为模块的默认导出。这意味着它期望Example 是一个变量,其值将被复制到正在导出的对象的Example 属性中。但在您的情况下,Example 是一种类型,而不是变量。

    如果您想将Example 导出为模块的默认导出,您可以这样做:

    export default Example;
    

    如果要将Example导出为命名类型导出,则不要使用default

    export { Example };
    

    【讨论】:

      猜你喜欢
      • 2018-08-07
      • 2020-04-28
      • 2021-08-23
      • 2020-12-05
      • 2018-03-31
      • 1970-01-01
      • 2023-04-03
      • 2023-04-05
      • 1970-01-01
      相关资源
      最近更新 更多