2012-10-09 36 views
2

我寫這樣的對象字面在打字稿:這在TypeScript的箭頭定義中?

var object = { 
    message: "Say", 
    say:() => { 
     return this.message; 
    } 
}; 

而且我得到了這樣生成的JavaScript:

var object = { 
    message: "Say", 
    say: function() { 
     return _this.message; 
    } 
}; 

不應該有一個return語句之前這樣一行:

var _that = this; 

爲我正在使用箭頭函數表達式?

回答

2

你是對的。它遺漏了:

var _this = this; 

這是釋放(0.8)後發現,目前固定在開發分支。

注: 此外我認爲你想寫

var object = { 
    message: "Say", 
    say: function() { 
     return() => this.message; 
    } 
}; 

將actualy它的運行時打印的發言權。 請參閱:http://wiki.ecmascript.org/doku.php?id=harmony:arrow_function_syntax

2

=>是一個有點危險,因爲在這裏,關鍵的是,它結合this到封閉範圍的this。在正確的代碼生成中,var _this = this;行會變爲以上對象字面量和您的say函數只會返回undefined

您只想使用this=>表達當你真正想引用this這將是目前在封閉範圍。在這種特殊情況下,你不需要(你想要的內部範圍this,即對象字面本身)。