Javascript 在Typescript中定义对象回调的最佳方法?

Javascript 在Typescript中定义对象回调的最佳方法?,javascript,typescript,interface,aurelia,Javascript,Typescript,Interface,Aurelia,我有一个侧边栏菜单组件,带有一个保存菜单项的服务。然后,多个源可以根据需要更改菜单 目前,每个项目都实现了SidebarItem: 导出接口侧栏项{ 名称:string, 链接:路由|字符串, 图标?:字符串 } 但是,我可以捕获某些事件(单击、悬停),并且希望有一个选项可以在侧边栏项本身上定义回调 我想知道实现这一目标的最佳方法。我应该在接口上定义两个属性并让每个人决定如何实现它,还是有任何选项?我不认为边栏项可以是类,因为我不希望每个边栏项都有一个新的类 如果有帮助,我还可以使用aurel

我有一个侧边栏菜单组件,带有一个保存菜单项的服务。然后,多个源可以根据需要更改菜单

目前,每个项目都实现了SidebarItem:

导出接口侧栏项{
名称:string,
链接:路由|字符串,
图标?:字符串
}
但是,我可以捕获某些事件(单击、悬停),并且希望有一个选项可以在侧边栏项本身上定义回调

我想知道实现这一目标的最佳方法。我应该在接口上定义两个属性并让每个人决定如何实现它,还是有任何选项?我不认为边栏项可以是类,因为我不希望每个边栏项都有一个新的类

如果有帮助,我还可以使用aurelia事件聚合器来调度事件


附言:如果这感觉很主观,就把标题读成“如何做”。我提出的方法是一种猜测,我认为它不正确。

我在界面上使用了以下语法:

onClick?:(e:MyEvent)=>void


感谢Nitzan Tomer的评论。

不清楚你在问什么。您是否询问如何在此接口中包含对回调函数的引用?一件事可能是提供不需要实现的约定方法(=>不要将它们放在接口中),但如果您想要此功能,则必须实现它们。与Aurelia组件生命周期方法(附加、绑定等)相当。它们是不需要的,但如果您想在附加组件之前执行某些操作,则必须实现该方法。@NitzanTomer如果不清楚,很抱歉。让我们以角度2分量为例。您可以创建一个组件类,但在组件被销毁时可能需要执行某些操作。在这种情况下,您将在组件上实现OnDestroy接口,然后在类上实现一个ngondstroy()方法。我的问题与此类似。例如,当用户单击菜单中的“取消帐户”按钮时,我希望显示一个可确认的对话框。1/2在我看来,最好的方法是选择在item-sidebarItem.onClick=function(event){displaymodel()}上实现某些事件处理程序方法。我的问题是如何正确地明确表示该选项存在。如果我在SidebarItem接口上添加类似onClick?:某种类型的内容,我可以获得IDE帮助,但我必须检查该项上是否存在该属性,如果存在,则调用事件处理程序,这感觉像是一种黑客行为。我也考虑过角度的方式,但我还是希望得到反馈。2/2是的,您可能应该将
onClick?:(e:MyEvent)=>void
添加到接口中。有点像在反应。