【问题标题】:Namespace has no exported member命名空间没有导出的成员
【发布时间】:2018-03-21 20:17:47
【问题描述】:

当我在 TypeScript 中编写此代码时,我收到一条错误消息 Namespace Bar has no exported member Qux。为什么会这样,我该如何解决?

class Foo {}

namespace Bar
{
    export const Qux = Foo;
}

let a: Bar.Qux;

【问题讨论】:

    标签: typescript


    【解决方案1】:

    您正在导出一个常量,而不是一个类型。你可以这样做let a = new Bar.Foo(),而a 将是 Foo 类型。

    如果你想同时导出一个类型和一个常量:

    namespace Bar
    {
        export const Qux = Foo;
        export type Qux = Foo;
    }
    

    那么你可以:

    let a: Bar.Qux = new Bar.Qux();
    

    TypeScript 将根据上下文确定您使用的是类型定义还是常量。

    【讨论】:

      【解决方案2】:

      您实现中的Qux 是一个变量而不是一个类型。
      因此,下面的代码是有效的:

      class Foo {}
      
      namespace Bar {
          export const Qux = Foo;
      }
      
      let a = Bar.Qux;
      

      如果您喜欢将Qux 用作interface 或扩展class,您可以这样做:

      class Foo {}
      
      namespace Bar {
          export class Qux extends Foo {}
      }
      
      let a = new Bar.Qux();
      

      这能解决您的问题吗?

      【讨论】:

        猜你喜欢
        • 2023-03-13
        • 2018-03-16
        • 2021-06-05
        • 2021-04-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-26
        相关资源
        最近更新 更多