Typescript 通过类传递函数
我是打字新手,我有个问题。我编写了以下代码:Typescript 通过类传递函数,typescript,Typescript,我是打字新手,我有个问题。我编写了以下代码: class FunctionMachine { name: string; constructor(_name: string) { this.name = _name; } sayName() { console.log(this.name); } sayNameWithCallback(callback){ console.log(this.name); callback(); } } var fmHans =
class FunctionMachine {
name: string;
constructor(_name: string) {
this.name = _name;
}
sayName() {
console.log(this.name);
}
sayNameWithCallback(callback){
console.log(this.name);
callback();
}
}
var fmHans = new FunctionMachine("Hans");
var fmOle = new FunctionMachine("Ole");
fmOle.sayName();
fmHans.sayNameWithCallback(fmOle.sayName);
我希望它在运行时会写“Ole,Hans,Ole”。相反,它返回“Ole,Hans”
它看起来像“this.”指的不是我使用fmOle.sayName作为参数时所期望的内容
TypeScript不支持这一点,还是我需要重写代码?在这种情况下,您需要保护您的作用域。瑞安·卡瓦诺(Ryan Cavanaugh)之前提到过一个技巧,你可以在课堂上使用一个胖箭头来完成这项操作:
class FunctionMachine {
name: string;
constructor(_name: string) {
this.name = _name;
}
sayName = () => { // <-- This is the clever bit
console.log(this.name);
}
sayNameWithCallback(callback) {
this.sayName();
callback();
}
}
var fmHans = new FunctionMachine("Hans");
var fmOle = new FunctionMachine("Ole");
console.log('First Call');
fmOle.sayName();
console.log('Second Call');
fmHans.sayNameWithCallback(fmOle.sayName);
类函数机{
名称:字符串;
构造函数(_name:string){
this.name=\u name;
}
sayName=()=>{//Hi,谢谢你的回复。它的作用就像一个符咒:)你能解释一下胖箭头是什么吗?它看起来像是lambda表达式,我从C#那里知道的。它们的主要目的是保留作用域-你可以用它们作为快速创建函数的简写。