使用module關(guān)鍵字來定義模塊救欧,并在末尾加花括號即可用值戳; 用export關(guān)鍵字使接口、類等成員對模塊外可見愈腾。
moduleValidation{//定義模塊
? exportinterfaceStringValidator{//聲明接口對外部可以使用
? isAcceptable(s:string):boolean;
}
varlettersRegexp=/^[A-Za-z]+$/;
varnumberRegexp=/^[0-9]+$/;
exportclassLettersOnlyValidatorimplementsStringValidator{//聲明類對外部可用
? ?isAcceptable(s:string){
? returnlettersRegexp.test(s);
? ? ?}
}
exportclassZipCodeValidatorimplementsStringValidator{
? ? ? ? ? ?isAcceptable(s:string){
? ? ? ? ? returns.length===5&&numberRegexp.test(s);
?}
}
}
在模塊聲明完成以后憋活,我們就可以調(diào)用這個(gè)模塊了,調(diào)用模塊中的接口虱黄、類悦即、方法等。調(diào)用方法簡單橱乱,就是用模塊名后面跟一個(gè)點(diǎn)來調(diào)用類辜梳、接口、方法等泳叠。
varstrings=['Hello','98052','101'];
varvalidators:{[s:string]:Validation.StringValidator;}={};
validators['ZIP code']=newValidation.ZipCodeValidator();//使用模塊中的類
validators['Letters only']=newValidation.LettersOnlyValidator();
// 顯示匹配結(jié)果
for(vari=0;i
for(varnameinvalidators){
document.write('"'+strings[i]+'" '+(validators[name].isAcceptable(strings[i])?' matches ':' does not match ')+name+"
");// 使用方法
}
}
分隔模塊到多個(gè)文件:隨著我們項(xiàng)目的擴(kuò)展作瞄,我們的代碼總不可能只寫在一個(gè)文件里。為了更好地維護(hù)項(xiàng)目危纫,我們會將特定功能放到一個(gè)文件里宗挥,然后加載多個(gè)文件實(shí)現(xiàn)我們想需要的功能。現(xiàn)在我們先將上面的代碼分割到多個(gè)文件里种蝶。
Validation.ts
moduleValidation{
exportinterfaceStringValidator{
isAcceptable(s:string):boolean;
}
}
LettersOnlyValidator.ts
///
moduleValidation{
varlettersRegexp=/^[A-Za-z]+$/;
exportclassLettersOnlyValidatorimplementsStringValidator{
isAcceptable(s:string){
returnlettersRegexp.test(s);
}
}
}
ZipCodeValidator.ts
///
moduleValidation{
varnumberRegexp=/^[0-9]+$/;
exportclassZipCodeValidatorimplementsStringValidator{
isAcceptable(s:string){
returns.length===5&&numberRegexp.test(s);
}
}
}
Test.ts
varstrings=['Hello','98052','101'];
varvalidators:{[s:string]:Validation.StringValidator;}={};
validators['ZIP code']=newValidation.ZipCodeValidator();
validators['Letters only']=newValidation.LettersOnlyValidator();
for(vari=0;i
for(varnameinvalidators){
document.write('"'+strings[i]+'" '+(validators[name].isAcceptable(strings[i])?' matches ':' does not match ')+name+"
");//調(diào)用類的方法
}
}
在項(xiàng)目中新建好以上四個(gè)文件属韧,然后我們編譯項(xiàng)目,如果我們代碼編寫沒錯(cuò)的話蛤吓,是能夠編譯通過的宵喂。另外,我們可以見到后面三個(gè)文件開頭有類似于 C# 的文檔注釋会傲,這是告訴TypeScript編譯器該文件依賴于哪些文件锅棕,假如依賴的文件不存在的話,編譯就會不通過淌山。當(dāng)然我們不寫也是可以的裸燎,只不過編譯器在編譯時(shí)不會幫我們檢查,一般來說泼疑,還是建議寫上德绿。 另外,在引用編譯生成的 JavaScript 文件時(shí),我們需要注意好順序移稳。以上面的代碼為例蕴纳,我們在 Html 代碼中已經(jīng)這么引用。