什么是打字稿再出口?

什么是打字稿再出口?

问题描述:

通过阅读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

问题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"; 

现在,您可以从单个文件导入这两个验证