我无法导入导出两次的类。
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。
答案 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}
(完整别名)来实现您想要达到的目标。