我将尝试解释如何在TypeScript中为类创建自定义事件。例如这个例子并没有很好地帮助我理解如何做到这一点。
下面是我要翻译的内容:
现在我希望能够从外部声明事件,就像以下代码所示的那样。
我需要做什么才能让这段代码在TypeScript中工作?这个叫什么?创建一个自定义事件还是创建自定义事件处理程序?
下面是我要翻译的内容:
我的示例类看起来像这样。
Cat.ts:
export class Cat {
public getName(): string {
return this.catName;
}
public setName(catName: string) {
this.catName = catName;
}
constructor(private catName: string) { }
public makeMeow() {
this.onWillMeow();
console.log("Cat meows!");
this.onDidMeow();
}
public onWillMeow() {
console.log("onWillMeow");
}
public onDidMeow() {
console.log("onDidMeow");
}
}
现在我希望能够从外部声明事件,就像以下代码所示的那样。
const myCat: Cat = new Cat("Tikki");
myCat.onWillMeow({event => {
console.log("Tikki the cat is just about to meow!");
}});
myCat.onWillMeow({event => {
console.log("Tikki the cat did just meow!");
}});
myCat.makeMeow();
现在,我想要获得类似于以下输出:
onWillMeow
Tikki the cat is just about to meow!
Cat meows!
onDidMeow
Tikki the cat did just meow!
我需要做什么才能让这段代码在TypeScript中工作?这个叫什么?创建一个自定义事件还是创建自定义事件处理程序?
type Handler<E> = (event: E) => void;
的含义吗?为什么指向void
?Handler
只是一个名称,可以随便取,对吗? - Socratesvoid
表示事件处理程序(例如,带有console.log("Tikki the cat is just about to meow!");
的函数)不返回值。实际上,Handler
只是一个可以更改的名称,但它是一个相当标准的术语。 - Matt McCutchen