如何在打字稿中公开事件,以便可以通过ES5代码定义处理程序?

时间:2018-08-17 23:33:48

标签: typescript ecmascript-5

我有一个表示文本框的TypeScript类。我想捕获一个当文本更改并且键入的文本是一个坏词时的事件,并允许其他代码(包括ES5代码)来处理它。

export class ParentalTextBox {
  private txt : HTMLInputElement;

 Attach(textbox : HTMLInputElement) {
    this.txt = textbox;
    this.txt.onchange = () => CheckForBadWords());
 }

 CheckForBadWords() {
  if (this.txt.value == "rascal") {
     // I want to fire an event for any handler to know that a bad word was
     // detected, here.
     //
   }
 }
}

我尝试做类似的事情。

 OnBadWordDetected : (word : string, target : HTMLInputElement);

但这给我一个错误,我不想定义它,因为我希望我班的其他ES5用户能够像这样分配处理程序

var myobj = new TypeScriptModule.ParentalTextBox();
myobj.Attach(document.getElementById("searchbox"));

myobj.OnBadWordDetected = function(word, target) {
 alert("I will tell your parents now!");
}

如何实现以上目标?

1 个答案:

答案 0 :(得分:1)

如果它是一个函数,则还需要定义返回类型:

OnBadWordDetected : (word : string, target : HTMLInputElement) => any;

如果您不关心返回类型是什么,any将允许具有任何返回类型的函数。