无法导入导出两次的类(Typescript)

时间:2015-12-30 15:26:14

标签: typescript

我无法导入导出两次的类。

a.ts

import * as moduleB from "./b";
export class A {
  b: moduleB.B;
  constructor() {
    this.b = new moduleB.B();
    this.b.hello();
  }
}

b.ts

import {C} from "./c";
export const B = C;

c.ts

export class C {
  hello() {
    console.log("hello");
  }
}

错误消息是:

a.ts(3,14): error TS2305: Module '"b"' has no exported member 'B'.

问题似乎是C的类型可能没有用“export const B = C;”导出。如果我改变“b:moduleB.B;”,错误就会消失只是“b:任何;”。 我该如何解决这个问题?

在b.ts中使用默认导出可以工作,但我想在b.ts中导出几个东西,这样就不是一个选项了。我正在使用Typescript 1.7.5。

1 个答案:

答案 0 :(得分:1)

当您在b : moduleB.B中声明属性a.ts时,您将b定义为类型 moduleB.B,但是你'我将moduleB.B定义为 const 。由于const是对C的构造函数的引用,new moduleB.B()会编译。

您可以在export type B = C中编写b.ts,但那样只会导出类型别名,这意味着b : moduleB.B会编译,但是{{1因为你没有导出构造函数,所以不会。

new moduleB.B()中使用export {C as B}(完整别名)来实现您想要达到的目标。