TypeScript:Lambdas并使用'这个'

时间:2015-06-13 19:19:43

标签: lambda typescript this

JavaScript框架通常使用apply()调用回调。

然而,

TypeScript的箭头表示法似乎不允许我访问“这个'指针。

它是如何完成的?

如果不是,那么有没有地方可以对当前的'这个'进行投票。处理Lambdas?

2 个答案:

答案 0 :(得分:4)

TypeScript在箭头函数中对this的处理符合ES6(阅读:Arrow Functions)。由于该规范,以任何其他方式采取行动都是不一致的。

如果您想访问当前功能的this,则可以使用常规功能。

例如,更改:

function myScope() {
    var f = () => console.log(this); // |this| is the instance of myScope
    f.call({});
}

new myScope();

要:

function myScope() {
    var f = function() { console.log(this); } // |this| is {}
    f.call({});
}

new myScope();

答案 1 :(得分:1)

让Lambda函数与关键字 this 一起使用的一种方法是将其放在类中。

在下面的示例中,函数employee2将不会编译:

;; skip
(defmacro ,(symbolicate 'with- struct) (components &rest body)
    (append
    '(loop)
    (eval
    `(iter (for s in ',',slot-names)
            (appending `(for ,s across (,(symbolicate ',',struct '- ,'s) ,,components)))))
    '(do)
    body))