2015-12-30 19 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

太好了。這解決了我的問題。我不知道這個導出語法。 –