2015-12-30 18 views
1

我无法导入导出了两次的类。无法导入导出了两次的类(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

当你在a.ts申报财产b : moduleB.B你定义bmoduleB.B的,但你已经定义moduleB.B常量。由于const是对C的构造函数的引用,new moduleB.B()确实会编译。

你可以写在b.ts代替export type B = C,但这样可以导出类型别名这意味着b : moduleB.B将编译,但new moduleB.B()不会因为你没有出口构造函数。

b.ts中使用export {C as B}(完全别名)以实现您想要达到的效果。

+0

太好了。这解决了我的问题。我不知道这个导出语法。 –