2016-09-23 106 views
3

通過閱讀official document,我不太瞭解再出口的含義。什麼是打字稿再出口?

在一個名爲ParseIntBasedZipCodeValidator.ts

export class ParseIntBasedZipCodeValidator { 
    isAcceptable(s: string) { 
     return s.length === 5 && parseInt(s).toString() === s; 
    } 
} // this part I understand 

export {ZipCodeValidator as RegExpBasedZipCodeValidator} from "./ZipCodeValidator"; 
// this part I don't understand 

這是問題的抽象:

export {A as B} from "./file1"; 

問題: 請解釋:

export {A as B} from "./file1"; 

Question2: 他們爲什麼稱之爲再出口?很混亂!我的印象是重新導出會替換模塊中的原始導入對象。

+0

它會回答你的問題,如果我只是說這是進口{A}從'相當於'。/ file1'後跟'export {A as B}'? –

+0

@ E_net4我完全可以理解它:) –

+1

文件是一個模塊。默認情況下沒有公開。通過導出,您可以將您的模塊/文件公開的內容製作成其他文件。您也可以重新導出從其他文件導入的具有不同名稱的項目(在這種情況下,將文件1中的A導出爲B)。將這些東西捆綁在一起或隱藏實現的細節很有用。 – toskv

回答

0

問題1

export {A as B} from "./file1"; 

這意味着進口A./file1並將其導出爲B

問題2 這是一個再出口,因爲出口這是已經出口元素(由源模塊)

再出口經常使用捆綁類似的類。

// EmailValidator.ts 
class EmailValidator { 
    isValid(email: string): boolean { ... } 
} 

// PhoneNumberValidator.ts 
class PhoneNumberValidator { 
    isValid(phoneNumber: string): boolean { ... } 
} 

// Validators.ts 
export {EmailValidator} from "EmailValidator"; 
export {PhoneNumberValidator} from "PhoneNumberValidator"; 

現在,您可以從單個文件導入這兩個驗證