【发布时间】:2014-06-06 18:58:19
【问题描述】:
给定
class BaseClass{
count:number=0;
public someMethod=():void =>{
this.count++;
}
}
class ChildClass extends BaseClass{
public someMethod=():void=>{
super.someMethod();
//Do more work here.
}
}
我收到错误消息:
只有基类的公共方法可以通过“super”访问 关键字。
@Basarat 在这里提供了一些信息,但这似乎是对该语言的真正破解。 typescript arrow operator to define a function on prototype
如何在保留“this”的上下文使用的同时做到这一点?
我是否正确使用箭头函数,或者它们真的应该仅用作声明回调之类的方法?
【问题讨论】:
-
我相信你已经知道了......但仍然想分享(因此评论:youtube.com/watch?v=tvocUcbCupA&hd=1)
-
我试图理解你为什么要以这种方式使用箭头函数。为什么不能在原型上使用常规方法是有原因的吗?
-
-
@web2nr 这个问题源于#Angular 的使用,我的对象的一些方法最终成为回调。因为回调在我自己的代码中并不明显(我自己的代码中没有使用
call),所以我发现this的上下文并不一致。我以为我可以简单地在我的类中的任何地方使用箭头函数,因此对我的类的回调就可以正常工作,并且从 Angular 的角度来看它确实如此。不过,正如我发现的那样,这使我无法使用#Typescript 继承。我认为在实践中我必须有选择性地使用箭头函数。 -
@RichardCollette 我认为这是您发现的 TypeScript 的一个合理缺陷。它不应该提供类,除非方法中的
this总是 是类实例。回调不是借口,因为它们可以而且应该使用顶级函数来实现。我已经学会了使用胖箭头语法,直到我需要覆盖方法。错误提交,但我怀疑它会被视为“设计”而被驳回。 typescript.codeplex.com/workitem/2491
标签: typescript arrow-functions