2016-01-20 52 views
0

我在寫一個小例子來通過打字稿驗證NameEmail,PasswordConfirmPassword我們是否必須在打字稿中使用「this」關鍵字?

我已經試過:

interface IValidation { 
    CheckingNameAndEmail(): boolean; 
    CheckingPasswordAndConfirmPassword(): boolean; 
} 

class Validation implements IValidation { 
    private Input: string; 
    private Type: string; 

    constructor(input: string, _type: string) { 
     this.Input = input; 
     this.Type = _type; 
    } 

    Validate = function() { 
     switch (this.Type) { 
      case 'Name': 
      case 'Email': 
       return this.CheckingNameAndEmail() 
      case 'Password': 
      case 'ConfirmPassword': 
       return this.CheckingPasswordAndConfirmPassword() 
     } 
    }; 

    CheckingNameAndEmail = function() { 
     var reg = this.Type == 'Name' 
      ? new RegExp('^.{4,16}$') 
      : new RegExp('^((([0-9]?)[a-zA-Z0-9]([0-9]?))+[\._-]??[a-zA-Z0-9]+)[email protected]{1}?([a-zA-Z0-9]+[\._-]??[a-zA-Z0-9]+)+\.(com|net|org|vn){1}$') 
     return reg.test(this.Input) 
    }; 

    CheckingPasswordAndConfirmPassword = function() { 
     var reg = new RegExp('^.{6,50}$'); 
     return reg.test(this.Input) 
    }; 
} 

正如你所看到的,我must在本例中使用this關鍵字。如果沒有,它會拋出我的錯誤(如:Cannot find ...)。

所以我的問題是:如何避免在打字稿中多次打電話this

+1

你爲什麼要避免'this'?打字? – hansmaad

+0

@hansmaad是的。速記輸入。 –

回答

3

您必須在Typesript中明確寫入this。有時候使用額外的局部變量來保存輸入並編寫簡化代碼很有用。考慮下面這個例子:

foo() { 
    if (this.someAwesomeMember.bar) { 
     var f = this.someAwesomeMember.bar(123); 
     var b = this.someAwesomeMember.bar(321); 
     // do more stuff with this awesome member 
    } 
} 

由於我們使用引用的所有this時間真棒成員,沒有太多在這裏運行如下。我們可以做的更好:

foo() { 
    var someAwesomeMember = this.someAwesomeMember; 
    if (someAwesomeMember.bar) { 
     var f = someAwesomeMember.bar(123); 
     var b = someAwesomeMember.bar(321); 
     // do more stuff with this awesome member 
    } 
} 

哪些可以精縮到像

var a=this.someAwesomeMember;if(a.bar){var f=a.bar(123);var b=a.bar(321);} 

注意,這可能會降低可讀性本地的其他變量來代替this。所以你必須在這裏仔細判斷。

+0

投票決定用另一個局部變量替換它:) –

4

你無法避免它。這是該語言的一個屬性。

<hard-learned-lesson>當我編寫我的代碼時,我傾向於避免使用這些快捷方式,因爲這會讓別人難以閱讀它。當你的目標是編寫好的代碼(對於你自己和其他人)時,可讀性是關鍵。 </hard-learned-lesson>

相關問題