【发布时间】:2018-03-17 00:29:42
【问题描述】:
我有一堂课:
const helper = function(val){
console.log(this.a);
console.log(this.b);
this.bar();
};
export class Foo {
public b = '45'
private a = 15;
bar(){
}
myMethod(){
return helper.apply(this,arguments);
}
}
问题是,在辅助函数中,它不知道上下文是什么('this' 的值是什么)。
我有没有办法告诉 typescript 辅助函数中 this 的值是 Foo 的一个实例?
(我使用辅助函数的原因是创建真正的私有方法)。
【问题讨论】:
-
这是一个 StackBlitz:stackblitz.com/edit/angular-dzmfb1(这是一个 Angular,但我只是在这里使用 main.ts 作为打字稿文件)。检查浏览器控制台,它的行为似乎如您所愿。
-
这在运行时工作(自然)......但在编译时,TS 不知道
this是什么(它无法知道,因为它是动态的,除非你告诉 TS 它始终是一种类型) -
let self: Foo = this as Foo;然后使用self呢?也可以在每次使用时将this替换为(this as Foo)。 -
@zerkms 我试过了,它说
t的私有方法/成员不能被t访问,即使它被声明为Foo,la脚! -
哦,对了。所以你想要一个在 JS 运行时不可用的私有方法,我明白了。
标签: node.js typescript typescript2.0 tsc