首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EventEmitter<undefined>和EventEmitter<void>有什么区别?

EventEmitter<undefined>和EventEmitter<void>有什么区别?
EN

Stack Overflow用户
提问于 2017-08-02 15:05:15
回答 1查看 13.3K关注 0票数 26

有时,我们可以使用泛型变量被省略的情况。如下所示:

代码语言:javascript
复制
@Component( ... )
class MyComponent {

  @Output()
  public cancel = new EventEmitter<undefined>();

  private myFoo() {
    this.cancel.emit(); // no need to pass any value
  }
}

因此,问题:哪一种方式更好地定义EventEmitter类型:

EventEmitter<undefined>EventEmitter<void>.

  • void更好,因为.emit()调用中没有参数。
  • undefined是更好的.emit()是相同的.emit(undefined)

你的意见是什么?

EN

回答 1

Stack Overflow用户

发布于 2017-08-02 15:18:41

根据TypeScript文档,void类型同时接受undefinednull -因此,以下代码将是有效的:

代码语言:javascript
复制
@Component( ... )
class MyComponent {

  @Output()
  public cancel = new EventEmitter<void>();

  private myFoo() {
    this.cancel.emit();
    this.cancel.emit(undefined);
    this.cancel.emit(null);
  }
}

然而,使用EventEmitter<undefined>,您只能传递undefined或没有参数,这在您的情况下可能更正确--也就是说,我看不到任何重大问题的发生仅仅因为您将null传递给一个发射器,而您并不期望从任何地方得到一个值,所以我会倾向于选择void,因为它是较短的选项。

票数 34
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45464495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档