2017-08-02 16 views
0

場合によっては汎用変数を省略する必要があります。このよう :EventEmitter <undefined>とEventEmitter <void>の違いは何ですか?

@Component(...) 
class MyComponent { 

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

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

ので、質問
EventEmitter<undefined>またはEventEmitter<void>:持つEventEmitter型を定義するためのより良い方法です。

  • voidは、.emit()コールに引数がないため、より優れています。
  • undefined.emit()が同じ.emit(undefined)

あなたの意見は何で良いですか?活字体のドキュメントによると、voidタイプはundefinednullの両方を受け入れ

答えて

2

- そのため、次のコードは、有効な次のようになります。

@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を選択するように誘惑されるでしょうそれはより短い選択肢だからです。

関連する問題